gpt4 book ai didi

PHP递归导航

转载 作者:太空宇宙 更新时间:2023-11-03 11:03:00 25 4
gpt4 key购买 nike

所以我有这个关于递归数组的问题。我想要的是从我的数据库中获取一个带有 PHP 的递归数组,这样我就可以创建一个带有子菜单的导航菜单,而无需创建另一个表。

这是我目前拥有的功能;

function getMenu($tree = null){
$tree2 = array();
$tree = getPages();
foreach($tree as $i => $item){
if($item->parent_id == $item->ID){
$tree2[$item->ID] = $item;
$tree2[$item->ID]['submenu'] = getMenu($tree, $item->ID);
}
}

return $tree2;
}

为了清楚起见,我并没有自己创建这个函数,而是从 http://www.jugbit.com/php/php-recursive-menu-with-1-query/ 获得的并在我认为正确的地方进行了调整

$tree 变量来自这个函数;

function getPages($limit = null,$sort = null) {
global $db;
$query = $db->prepare('SELECT * FROM pages ORDER BY Position');
$query->execute();
return $query->fetchAll(PDO::FETCH_CLASS);
}

在过去的两天里,我一直在努力解决这个问题,试图找出我做错了什么。

如果我打印 getMenu 函数,我得到的只是一个空数组,我不知道为什么。它确实让 foreach 正确,我不认为这是问题所在,但我不是 100% 确定..

我希望问题很清楚,但如果不是,我很抱歉,并会在需要的地方澄清。

提前致谢

最佳答案

getPages中,如果你想让它返回一个关联数组,那么你需要做:

return $query->fetchAll(PDO::FETCH_ASSOC);

然后你的 getMenu 看起来像:

function getMenu($tree = null, $parent = 0) {
if (!isset($tree))
$tree = getPages();

$tree2 = array();
foreach($tree as $i => $item) {
if($item['id'] == $parent) {
$tree2[$item['id']] = $item;
$tree2[$item['id']]['submenu'] = getMenu($tree, $item['id']);
}
}

return $tree2;
}

关于PHP递归导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14367910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com