2013-02-16 2 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

0

Предположим, что $ directories - это ваш многоуровневый массив, и $ merged - это то, что вы хотите. Тогда:

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

Я думаю, что вы путаете 'foreach' синтаксис PHP с Java/Синтаксис Javascript. –

+0

Спасибо, ты прав, я был! В последнее время я использую слишком много языков, все синтаксисы размыты вместе. Во всяком случае, обновленный пример. – kufudo

Смежные вопросы