2013-11-09 108 views
0

我有一個多維數組,我想按鍵拆分,理想情況下,我想從多維數組的鍵值中動態創建新的命名數組。將多維數組拆分爲新的一組簡單數組通過鍵PHP

從邏輯上講,我假設我需要獲取密鑰,然後通過多維數組的每個密鑰循環並將該迭代的相應密鑰的值推送到新數組中。

每個內部數組都很大,理想情況下我想設置它以便如果該數組更改其對數,它仍然可以運行。

我覺得我知道這裏的一些成分,但似乎無法把它放在一起。

實例陣列:

$data = Array(
    [0] => Array 
    (
     [count] => 0 
     [id] => 221 
     [title] => Home 
     [latitude] => -34.0284224 
     [longitude] => 18.46636710000007 
    ), 
    [1] => Array 
    (
     [count] => 1 
     [id] => 321 
     [title] => office 
     [latitude] => -34.0284224 
     [longitude] => 18.46636710000007 
    ), 
    [2] => Array 
    (
     [count] => 2 
     [id] => 124 
     [title] => storage 
     [latitude] => -34.0284224 
     [longitude] => 18.46636710000007 

    ) 
) 

什麼,我想產生是:

$count = array(0,1,2); 
$id = array(221,321,124); 
$title = array('home','office','storage'); 

等等等等

任何和所有幫助將大量的讚賞。

+0

什麼是編輯喬治? – pushplaybang

+0

專業提示:如果您點擊*編輯的x分鐘前*,您可以看到一篇文章的編輯歷史:) –

回答

3

Variable variables似乎是你在找什麼:

foreach($data as $element) { 
    foreach($element as $key => $value) { 
     if(!isset($$key)) { 
      $$key = array(); 
     } 

     array_push($$key, $value); 
    } 
} 
+0

謝謝,我試圖得到這個,馬克提出了一個很好的觀點,雖然關於'不知道'的變量名稱在動態情況下,而我喜歡array_column位,這是我在這個問題之後,謝謝。 – pushplaybang

1

如果你使用PHP> = 5.5,則array_column()可以爲你做到這一點:

$count = array_column($data, 'count'); 
$id = array_column($data, 'id'); 
$title = array_column($data, 'title'); 

要使它更通用:

foreach($data[0] as $key => $value) { 
    $$key = array_column($data, $key); 
} 

但這裏的危險是,你不一定知道var的名字iables你正在創建

所以一個更通用,還是

$newArray = array(); 
foreach($data[0] as $key => $value) { 
    $newArray[$key] = array_column($data, $key); 
} 

可能更可行

+0

這裏沒有什麼錯,但是OP確實說'每個內部數組都是相當大的,理想情況下,我想設置它,以便如果該數組更改其對數,這仍然可以運行。「.. –

+0

這就是真的,但第二個例子在這種情況下似乎很可行,我不知道array_column,確實非常好。我可能會使用這個解決方案,儘管Georges的回答與我說的問題的方式更匹配,非常感謝你的努力和洞察力。 – pushplaybang