В новой записи я покажу вам как создать древовидную структуру массива с потомками и родительскими элементами. На входе мы будем получать элементы на одном уровне, и полученный массив будем перестраивать в древовидную структуру.
Такой способ отлично подойдёт для создания сложного многоуровневого меню, с неограниченных количеством вложений.
Для своего проекта я создал таблицу в БД, для записи категорий. Категории имеют следующие поля:
- 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;
}