Для получения полного доступа
зарегистрируйтесь.
RSS

Все сниппеты с тэгом «деревья»



Gravatar image
Константин Беннер
  • Репутация: 1
  • Сниппеты: 0
  • Ревизии: 1

На вход поступает плоский список с id и id_parent, за счет ссылок(&) добавляем элементы, и в итоге получаем желанное дерево, если возникли вопросы то пожалуйста напишите мне.

/*
 *	Пример входных данных
**/

$list = [
    1 => ["id" => 1, "id_parent" => null, "name" => "TEST1"],
    2 => ["id" => 2, "id_parent" => 1,    "name" => "TEST2"],
    3 => ["id" => 3, "id_parent" => 1,    "name" => "TEST3"],
    4 => ["id" => 4, "id_parent" => 3,    "name" => "TEST4"],
];

foreach ($list as $item) {
    if (empty($item['id_parent']) || empty($list[$item['id_parent']])) {
        $result[] = & $list[$item['id']];
    } else {
        $parent = & $list[$item['id_parent']];
        $parent['items'][] = & $list[$item['id']];
    }
}
Gravatar image
Александр Коваленко
  • Репутация: 11
  • Сниппеты: 1
  • Ревизии: 0

На вход поступает плоский список с id и id_parent, за счет ссылок(&) добавляем элементы, и в итоге получаем желанное дерево, если возникли вопросы то пожалуйста напишите мне.

Пример входных данных

$list = [
    1 => ["id" => 1, "id_parent" => null, "name" => "TEST1"],
    2 => ["id" => 2, "id_parent" => 1,    "name" => "TEST2"],
    3 => ["id" => 3, "id_parent" => 1,    "name" => "TEST3"],
    4 => ["id" => 4, "id_parent" => 3,    "name" => "TEST4"],
];

foreach ($list as $item) {
    if (empty($item['id_parent']) || empty($list[$item['id_parent']])) {
        $result[] = & $list[$item['id']];
    } else {
        $parent = & $list[$item['id_parent']];
        $parent['items'][] = & $list[$item['id']];
    }
}