2011-10-08 16 views
2

我有一個關聯數組,它看起來是這樣的:轉換關聯數組到常年偏多

array 
(
    'device_1' => array('a','b','c','d'), 
    'device_2' => array('x','y','z') 
) 

我怎樣才能在陣列內爆到一個標準的數組是這樣的:

array(0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd', 4 => 'x', 5 => 'y', 6 => 'z') 

或者更簡單:

array('a','b','c','d','e','x','y','z') 

有人知道我該怎麼辦嗎?

+0

的可能重複[如何拼合多維數組?](HTTP://計算器。 COM /問題/ 1319903 /如何到壓扁-A-多維陣列)絕對沒有這些解決方案的工作 – deceze

+0

。每個只顯示父關聯數組的最終子數組。 – hohner

回答

4

你可以這樣做:

$result = call_user_func_array('array_merge', $array); 

,這將給你:

Array 
(
    [0] => a 
    [1] => b 
    [2] => c 
    [3] => d 
    [4] => x 
    [5] => y 
    [6] => z 
) 

Demo

+0

哎呦工作這麼多的SPL庫迭代器,我忘了簡單的使用call_user_func_array:d +1簡單的方式 – Talisin

+0

這不會與關聯多維數組 – surfer190

+0

它的工作,但你首先需要申請這每一個外層葉子一次,直到只有一層外層葉子。當您查看多維數組的問題時,這已經是答案的一部分。如果你有示範性的數據與一些代碼來證明你要問什麼,你也可以創建一個新的問題(如果尚未即使在形式問過)。如果沒有這個答案:http://stackoverflow.com/a/7696976/367456 – hakre

1

使用功能array_merge可以合併數組。

實施例從: http://www.php.net/manual/en/function.array-merge.php

<?php 
$array1 = array("color" => "red", 2, 4); 
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4); 
$result = array_merge($array1, $array2); 
print_r($result); 
?> 

輸出:

Array 
(
    [color] => green 
    [0] => 2 
    [1] => 4 
    [2] => a 
    [3] => b 
    [shape] => trapezoid 
    [4] => 4 
) 
0

使用關聯數組:

$devices = array 
(
    'device_1' => array('a','b','c','d'), 
    'device_2' => array('x','y','z') 
); 

$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($devices)); 
foreach($iterator as $value) { 
    $output[] = $value; 
} 

print_r($output); 

以獲取更多信息可以讀取RecursiveIteratorIterator class

+0

我已經試過array_merge,但它只是結束了上市父多維數組的最後一個數組。 – hohner

+0

噢,我的壞,你有聯繫的數組,而不是兩個數組。我會寫你的東西 – Talisin