Здравствуйте! Не смогли бы Вы помочь разобраться с методом Tommy Lacroix tree? В функции getTree() создаётся дерево массива $dataset с условием if. Как я понял в массив $tree, попадают значения с parent == 0, а затем под каждым таким значением добавляется массив $dataset[$node['parent']]['childs'][$id] - второй уровень вложенности. После этого работает только else, и благодаря '&' перед $node, в foreach вместо $dataset подставляется $dataset[$node['parent']]['childs'][$id] - третий уровень и тд. Получается здесь 2 массива: $tree с parent == 0 и $dataset[$node['parent']]['childs'][$id] с parent != 0. Подскажите, это так или я ошибаюсь? Если не так, то опишите пожалуйста подробнее, что и как происходит в методе? В и-нете, информация о ссылках php скудноватая. Искал описание этого метода, но так ничего не нашёл.
Таблица базы данных:
(`id`, `title`, `parent`)
(685, 'Комплектующие к Apple', 0)
(691, 'Запчасти iPad', 685)
(692, 'Запчасти iPhone', 685)
(693, 'Запчасти iPod', 685)
(694, 'Запчасти Mac', 685)
(695, 'iPad', 691)
(696, 'iPad 2', 691)
(697, 'iPad NEW (iPad 3)', 691)
(698, 'iPad 4', 691)
(699, 'iPad mini', 691)
(700, 'iPhone', 692)
(701, 'iPhone 3G/3GS', 692)
(702, 'iPhone 4', 692)
(703, 'iPhone 4S', 692)
(704, 'iPhone 5', 692)
(705, 'Микросхемы Apple', 685).
Сам метод:
function getTree($dataset) {
$tree = array();
foreach ($dataset as $id => &$node) {
if (!$node['parent']){
$tree[$id] = &$node;
}else{
$dataset[$node['parent']]['childs'][$id] = &$node;
}
}
return $tree;
}