簡體   English   中英

將2d數組轉換為1d PHP

[英]turn 2d array into 1d PHP

我有一個數組(下面的示例),其中包含3個內容非常相似的數組。 我想知道是否有一種簡單的方法將所有內容放入一個數組,而不是三個單獨的數組。 我嘗試的所有內容似乎都覆蓋了數據,僅剩下第3個數組中的信息。

array
  0 => 
    array
      'america' => int 19
      'music' => int 6
      'states' => int 5
      'bank' => int 5
  1 => 
    array
      'america' => int 19
      'home' => int 3
      'society' => int 2
      'writers' => int 2
   2 => 
    array
      'america' => int 19
      'lutheran' => int 4
      'church' => int 4
      'national' => int 4
      'cruises' => int 3

理想情況下,最終結果將如下所示:

array
          'america' => int 19
          'music' => int 6
          'states' => int 5
          'bank' => int 5
          'america' => int 19
          'home' => int 3
          'society' => int 2
          'writers' => int 2
          'america' => int 19
          'lutheran' => int 4
          'church' => int 4
          'national' => int 4
          'cruises' => int 3

有什么辦法嗎? 謝謝

您將無法擁有具有相同鍵值(例如,“ America”的3個鍵,等等)的關聯數組。 當您嘗試在數組中設置這些鍵時,您只會覆蓋先前的值。

我想知道是否有一種簡單的方法將所有內容放入一個數組

簡短的答案是沒有。

您可以使用原始int變量和其出現次數的值來創建一個類,然后使數組指向該類的對象。 可以使用鏈接列表來實現相同的想法,盡管兩種方法都比您現有的方法復雜。

例如,鍵“ america”將指向一個變量設置為19且另一個變量設置為3的對象。

問題:您是否需要知道值來自哪個原始數組? 如果是,那么我上面提到的將失去該屬性。

function array_2d_to_1d($array)
                                    {
                                        $my_val=array();
                                        $my_key=array();
                                        foreach ($array as $value) {
                                             array_push($my_val, $value['cat_title']);
                                             array_push($my_key, $value['cat_id']);
                                         }

                                        $result = array_combine($my_key, $my_val);
                                        return $result;

                                    }                                

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM