Создание древовидной структуры массива из обычного массива PHP — PROG-TIME

Создание древовидной структуры массива из обычного массива PHP

11.03.2023
Содержание:

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

Такой способ отлично подойдёт для создания сложного многоуровневого меню, с неограниченных количеством вложений.

Для своего проекта я создал таблицу в БД, для записи категорий. Категории имеют следующие поля:

  • id
  • title
  • id_parent

Получается что каждый элемент знает своего родителя, но не знает своих потомков.

Далее я прописал функцию которая в качестве аргумента принимает список элементов.

function createTreeCategorys($arrListCategory)
{
    $tree = array();

    foreach ($arrListCategory as $id => &$node) {
        //Если нет вложений
        if (!$node['id_parent']){
            $tree[$id] = &$node;
        } else {
            //Если есть потомки то перебераем массив
            $arrListCategory[$node['id_parent_category']]['childs'][$id] = &$node;
        }
    }
    return $tree;
}