Я хочу создать функцию, которая возвращает полный путь от заданного узла обратно к корневому значению. Я пытался сделать рекурсивную функцию, но мне не повезло. Что было бы подходящим способом сделать это? Я предполагаю, что рекурсивная функция является единственным способом?
Вот массив:
Array
(
[0] => Array
(
[id] => 1
[name] => Root category
[_parent] =>
)
[1] => Array
(
[id] => 2
[name] => Category 2
[_parent] => 1
)
[2] => Array
(
[id] => 3
[name] => Category 3
[_parent] => 1
)
[3] => Array
(
[id] => 4
[name] => Category 4
[_parent] => 3
)
)
Результат, который я хочу, чтобы моя функция выводила при получении полного пути к идентификатору узла # 4:
Array
(
[0] => Array
(
[id] => 1
[name] => Root category
[_parent] =>
)
[1] => Array
(
[id] => 3
[name] => Category 3
[_parent] => 1
)
[2] => Array
(
[id] => 4
[name] => Category 4
[_parent] => 3
)
)
печально известный пример моих рекурсивных навыков:
function recursive ($id, $array) {
$innerarray = array();
foreach ($array as $k => $v) {
if ($v['id'] === $id) {
if ($v['_parent'] !== '') {
$innerarray[] = $v;
recursive($v['id'], $array);
}
}
}
return $innerarray;
}