Проблема в дереве массива категорий и под категорий

104
08 августа 2019, 01:10

Проблема заключается в корректности составления массива категорий и под категорий. Собственно сам код:

Метод создания самого дерева из массива:

public static function getTree($dataset){
    $tree = [];
    foreach ($dataset as $id => &$node) {
        if (!$node['parent_id'])
            $tree[$id] = &$node;
        else
            $dataset[$node['parent_id']]['childs'][$node['id']] = &$node;
    }
    return $tree;
}

Метод, в котором используется созданное древо, и, соответственно, выводится результат:

 public static function getCategoriesList()
{
    $db = Db::getConnection();
    $result = $db->query('SELECT id, name, parent_id FROM category WHERE status = "1" ORDER BY sort_order, name ASC');
    $i = 0;
    $categoryList = [];
    while ($row = $result->fetch()) {
        $categoryList[$i]['id'] = $row['id'];
        $categoryList[$i]['name'] = $row['name'];
        $categoryList[$i]['parent_id'] = $row['parent_id'];
        $i++;
    }
    $tree = Category::getTree($categoryList);
    echo '<pre>'.print_r($tree, true).'</pre>';
    return true;
}

Таблица категорий

И дерево, которое получается:

Answer 1

В методе getCategoriesList массив категории заполняется с последовательными номерами ключей ($i), а в методе getTree идет обращение к категориям из этого массива по идентификатору родительской категории ($dataset[$node['parent_id']]).
При заполнении массива следует указывать ключ категории $row['id'].

while ($row = $result->fetch()) {
    $categoryList[$row['id']]['id'] = $row['id'];
    $categoryList[$row['id']]['name'] = $row['name'];
    $categoryList[$row['id']]['parent_id'] = $row['parent_id'];
}
READ ALSO
1С Битрикс. Отправка уведомления о прочтении письма

1С Битрикс. Отправка уведомления о прочтении письма

Пытаюсь реализовать отправку уведомления о прочтении писем получателемВ интернете насерфил такие хейдеры:

92
Error adding avatar to comments

Error adding avatar to comments

В чем может быть причина этой ошибкипри входе на сайт от другого пользователя в блоге рядом с комментариями все аватары изменяются идентично...

104
Как получить ip пользователя

Как получить ip пользователя

Есть следующая форма:

145
Сортировка товаров с фото битрикс

Сортировка товаров с фото битрикс

Как в каталоге битрикс вывести первыми товар с фотографиями ?

119