Также Вы можете использовать рекурсивную функцию с более эффективным способом, как это:
$menu = [
[
'menutype' => 'url',
'menuid' => 46,
],
[
'menutype' => 'product_category',
'menuid' => 55,
'children' => [
[
'menutype' => 'product_category',
'menuid' => 69,
'children' => [
[
'menutype' => 'product_category',
'menuid' => 211
],
[
'menutype' => 'product_category',
'menuid' => 57
],
[
'menutype' => 'product_category',
'menuid' => 166
]
]
],
[
'menutype' => 'product_category',
'menuid' => 57
],
[
'menutype' => 'product_category',
'menuid' => 94
]
]
],
[
'menutype' => 'posts_category',
'menuid' => 45
]
];
function getMenu(array $menu, $menuId, $children = true)
{
foreach ($menu as $menuItem) {
if (array_key_exists('menuid', $menuItem) && $menuItem['menuid'] == $menuId) {
if ($children === true && array_key_exists('children', $menuItem)){
return $menuItem['children'];
}
return $menuItem;
}
if (array_key_exists('children', $menuItem)) {
return getMenu($menuItem['children'], $menuId, $children);
}
}
}
getMenu($menu, 69);