[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: из одномерного массива в двумерный php меню
DarkGuy
Доброй ночи!
Вечный момент как из одномерного массива сделать двумерный?
т.е.
есть масив

Array
(
[
4] => Array
(
[
id] => 4
[name] => 9+
[
parent] => 0
)

[
6] => Array
(
[
id] => 6
[name] => 9+
[
parent] => 0
)

[
2] => Array
(
[
id] => 2
[name] => Главная
[parent] => 0
)

[
1] => Array
(
[
id] => 1
[name] => Карта
[parent] => 0

)

[
3] => Array
(
[
id] => 3
[name] => Карта
[parent] => 2
)

[
5] => Array
(
[
id] => 5
[name] => Карта
[parent] => 2
)

[
7] => Array
(
[
id] => 7
[name] => khukhkh
[parent] => 5
)

)


а хочется получить такое

Array
(
[
4] => Array
(
[
id] => 4
[name] => 9+
[
parent] => 0
)

[
6] => Array
(
[
id] => 6
[name] => 9+
[
parent] => 0
)

[
2] => Array
(
[
id] => 2
[name] => Главная
[parent] => 0
[children] => Array
(
[
3] => Array
(
[
id] => 3
[name] => Карта
[parent] => 2
)

[
5] => Array
(
[
id] => 5
[name] => Карта
[parent] => 2
[children] => Array
(

[
7] => Array
(
[
id] => 7
[name] => khukhkh
[parent] => 5
)

)
)

)

)

[
1] => Array
(
[
id] => 1
[name] => Карта
[parent] => 0

)

)


с неограниченной вложенностью
-------------------------------------
т.е если $row[parent] совпадает с любым $row[id] этот подмассив идет в $row[id][children]
-------------------------------------------
Надеюсь понятно объяснил.

У меня получается 500 ошибка из-за рекурсии

   public function Pages($parent, $block){
foreach($this->_Pages as $key=>$value){
if($value['block'] == $block && $value['parent'] == $parent){
$rows[$value['id']] = $value;
}elseif($value['block'] == $block && $value['parent'] != $parent ){
// $rows[$value['parent']]['children'][$value['id']] = $value;
self::Pages($value['parent'], 0);
}
}

return $rows;
}


Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.