Как правильно выполнить рекурсию в php?
Всем привет!
Ответ должен быть элементарным, где-то косячу, но где именно не вижу.
У меня есть дерево категорий в таком виде:
"1" = [
"id" = 30
"category_id" = 1,
"parent_id" = null,
"count" = 0,
"childs" = []
},
"2" = [
"id" = 31,
"category_id" = 2,
"parent_id" = null,
"count" = 0,
"childs" = [
21,
22,
23,
24
],
"21" = [
"id" = 32,
"category_id" = 21,
"parent_id" = 2,
"count" = 0,
"childs" = [
211,
212,
213
],
Задача - пройтись по массиву и записать в дочерние категории не только дочерние первого уровня, а все дочерние. То есть у категории под номером 2, должны быть не только 21,22,23,24, но и 211,212,213 и так далее.
Сделал я таким образом:
foreach ($tree as $id => $item) {
if (!empty($item['childs'])) {
foreach($item['childs'] as $child) {
$tree = self::recursive($tree, $child);
}
}
}
public function recursive($tree, $parent)
{
foreach($tree as $id => $item) {
if ($id == $parent) {
$number = $tree[$id]['parent_id'];
foreach ($tree[$id]['childs'] as $child) {
$tree[$number]['childs'][] = $child;
$tree = self::recursive($tree, $child);
}
}
}
return $tree;
}
Я получаю первый и второй уровни вложенности. Как мне получить все уровни?
Полагаю, что я где-то допустил синтаксическую оплошность. Плиз, хелп ми))