$array = [
[
'100', //допустим, id
'Фрукты', //Название
[
'101',
'Цитрусовые',
[
[
'102',
'Апельсин'
],
[
'103',
'Мандарин',
]
]
]
],
[
'103',
'Овощи',
[
'104',
'Корнеплоды',
[
[
'105',
'Картофель'
],
[
'106',
'Морковь',
]
]
]
],
];
$heystack = '106';
var_dump(search_category($heystack, $array));
array(['Овощи', 'Корнеплоды', 'Морковь']);
function parse_categories($heystack, $array) {
foreach ($array as $row) {
if ($heystack == $row[0]) {
return $row[1];
} else {
foreach ($row as $subrow) {
if (is_array($subrow[0])) {
$return = parse_categories($heystack, $subrow);
if ($return !== null) {
return $return;
}
}
}
}
}
return null;
}
$array = [
[
'id' => '100', //допустим, id
'name' => 'Фрукты', //Название
'sub_category' => [
'id' => '101',
'name' => 'Цитрусовые',
'product' => [
[
'id' => '102',
'name' => 'Апельсин'
],
[
'id' => '103',
'name' => 'Мандарин',
]
]
]
],
[
'id' => '103',
'name' => 'Овощи',
'sub_category' => [
'id' => '104',
'name' => 'Корнеплоды',
'product' => [
[
'id' => '105',
'name' => 'Картофель'
],
[
'id' => '106',
'name' => 'Морковь',
]
]
]
],
];
$iterator = new \RecursiveIteratorIterator(new \RecursiveArrayIterator($array));
$names = [];
foreach ($iterator as $name) {
$depth = floor($iterator->getDepth()/2);
$names[$depth] = $name;
echo implode(' > ', array_slice($names, 0, $depth + 1)), '<br>', PHP_EOL;
}