我$menu_array3
Array
(
[9] => Array
(
[category_name] => cat1
[category_id] => 9
[children] => Array
(
[12] => Array
(
[category_name] => test5
[category_id] => 12
)
[10] => Array
(
[category_name] => cat2
[category_id] => 10
[children] => Array
(
[15] => Array
(
[category_name] => cat7
[category_id] => 15
[children] => Array
(
[18] => Array
(
[category_name] => cat10
[category_id] => 18
)
[16] => Array
(
[category_name] => cat8
[category_id] => 16
)
)
)
[17] => Array
(
[category_name] => cat9
[category_id] => 17
)
)
)
)
)
[11] => Array
(
[category_name] => cat3
[category_id] => 11
[children] => Array
(
[13] => Array
(
[category_name] => cat5
[category_id] => 13
)
)
)
)
引用this answer我尝试使用
构建导航菜单function build_nav($category_name, $data)
{
$result = array();
foreach ($data as $row)
{
if ($row['category_name'] == $category_name)
{
$result = "<li>" . $row['category_name'] . "</li>";
$result= build_nav($row['category_name'], $data);
}
}
return $result;
}
$menu="<ul>";
$menu.=build_nav('cat1', $menu_array3);
$menu.="</ul>";
echo "menu <pre>"; print_r($menu); echo "</pre>";
但我被
拦住了Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 261900 bytes)
我请求你纠正我的建议。提前致谢 的修改 我找到了直接从db https://stackoverflow.com/a/3380296/1528701
构建导航菜单的解决方案答案 0 :(得分:0)
出现此错误的原因可能是您在foreach循环中调用了函数build_nav()。这意味着对于数据中的每个值,build_nav()将被触发,其中foreach循环将再次被触发,依此类推。 所以主要答案是:你创造了一个无限循环。
我想你可能误解了启发你这个功能的答案。在这种情况下,他们使用父ID。这可以帮助您进行搜索。另请注意,它们不像您使用的那样使用深度嵌套的数组。好好看看,你会找到解决方案。