2012-07-19 144 views
1

我有一個包含3個非常類似內容的數組的數組(示例如下)。我想知道是否有一種簡單的方法將所有內容放入一個數組中,而不是3個單獨的數組。我所嘗試的一切似乎只是覆蓋數據,而我只剩下來自第三個數組的信息。將2d數組轉換爲1d PHP

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 

任何解決方案?謝謝

+0

二維數組可能是最簡單的選擇。你爲什麼想要它是1D? – Celeritas 2012-07-19 21:33:38

回答

4

您將無法使用具有相同鍵值的關聯數組(即「America」等3個鍵)。當您嘗試在數組中設置這些鍵時,您只會覆蓋以前的值。

+0

好吧,我明白了,這是否意味着整數值也會被覆蓋?整數是真正重要的部分。 – shanahobo86 2012-07-19 21:31:06

+0

那麼,如果你正在循環2D數組,並且他們試圖做如下操作:「$ one_dim_array [$ two_dim_array_key] = $ two_dim_array_value;」,那麼您將簡單地覆蓋1D數組中每個重複2D數組鍵值的值。 – 2012-07-19 21:32:44

0
+0

我試過這樣的array_merge: $ test = array_merge($ cluster [0],$ cluster [1]); 沒有工作,我使用不正確? – shanahobo86 2012-07-19 21:35:47

+0

你在$ test中的結果是什麼,或者你是否收到任何錯誤信息? – mdo 2012-07-19 21:36:58

+0

感謝您爲我們輸入的每一個人,我最終只是以一種不同的方式去做。在我的代碼之前,我的代碼有點傻了,像這樣設置了陣列。 – shanahobo86 2012-07-20 18:27:01

1

我在想,如果有把一切都變成一個 陣列

簡短的回答是沒有一個簡單的方法。

您可以使用原始int變量的值和發生次數值創建一個類,然後將數組指向該類的對象。同樣的想法可以使用鏈表來實現,儘管兩種方式都比你現有的方式更復雜。

例如鑰匙「美」將指向一個對象有一個變量設置爲19,而另一變量設置爲3

問:你需要知道原來陣列的值來自?如果是,那麼我上面提到的將會失去那個財產。

0
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; 

            }         
+1

你應該添加一些解釋 – 2015-07-15 20:39:07