2013-02-16 83 views
1

我有一個陣列,其看起來像這樣:動態array_merge

array(2) { 
    [0]=> array(2) { 
     [0]=> string(52) "./app/pictures/uploads/Audi/A1/name1.jpg" 
     [1]=> string(52) "./app/pictures/uploads/Audi/A1/name2.jpg" 
    } 
    [1]=> array(1) { 
     [0]=> string(52) "./app/pictures/uploads/Audi/A3/name3.jpg" 
    } 
} 

陣列上面可以具有比兩個鍵(0,1)以上。多一點信息,可能是我翻閱一個文件夾。如果有子文件夾,它會將每個子文件夾放入數組中,並將這些子文件夾的內容/文件放入該數組中。

所以我的結果,我需要的是這樣的:

array(3) { 
    [0]=> string(52) "./app/pictures/uploads/Audi/A1/name1.jpg" 
    [1]=> string(52) "./app/pictures/uploads/Audi/A1/name2.jpg" 
    [2]=> string(52) "./app/pictures/uploads/Audi/A3/name3.jpg" 
} 

我意識到,與array_merge

$array = array_merge($tmparray[0],$tmparray[1]); 

現在你可以看到,在這裏的鑰匙是固定的。但他們應該是動態的。我怎麼能意識到這一點?也許一個循環,但我沒有得到線索,$array變量不會在每次循環中都被覆蓋...

也許現在已經很清楚了,但我很快就需要一個解決方案。

回答

5

你只需要循環父陣列上,然後將孩子合併成一個輔助變量:

$result = array(); 
foreach ($directories as $array) { 
    $result = array_merge($result, $array); 
} 
+0

哦,是啊^^非常感謝你:) – user2077480 2013-02-16 13:50:41

0

假設$目錄是你的多級數組,$ merged就是你想要的。然後:

$merged = array(); 
foreach($directories as $dir) { 
    foreach($dir as $file) { 
     $merged[] = $file; 
    } 
} 
+2

我想你混淆了PHP的'foreach'語法與Java/Javascript語法。 – 2013-02-16 03:00:01

+0

謝謝,你是對的,我是!最近我一直在使用太多的語言,所有的語法都混在一起。無論如何,更新的例子。 – kufudo 2013-02-17 04:38:00