слияние массивов не будет работать в foreach переполнение стека

Может кто-нибудь сказать, почему массив $ output всегда является только последним массивом $ tmp в foreachloop.

я тяну волосы здесь ..

private function create_dir_array($dirs) {
$output = array();
foreach ($dirs as $key => $path) {
$path = split('/',$path);
$tmp = array();
$counter = count($path)-1;
for($i = $counter; $i >= 0; $i--)
{
$tmp = array($path[$i] => $tmp);
}
$output = array_merge($output, $tmp);
}
print("<pre>".print_r($output,true)."</pre>");

}

если есть этот массив

Array
(
[0] => archive/folder1
[1] => archive/folder1/subfolder1
[2] => archive/folder2
.....
)

и я хочу этот массив из заданных данных
может у кого-нибудь есть более простая идея для этого?

Array
(
[archive] => Array(
[folder1] => Array(
[subfolder1] => Array()
)
)
[folder2] => Array(
......
)

0

Решение

Потому что вы переопределяете его на каждой итерации в цикле:

for($i = $counter; $i >= 0; $i--)
{
$tmp = array($path[$i] => $tmp);
}
1

Другие решения

Ну, это работает просто отлично, я использую array_merge_recursive.
Что сейчас совершенно логично для меня.

до сих пор чертовски много кода на самом деле не так много.

0

По вопросам рекламы [email protected]