gpt4 book ai didi

创建树结构所需的 PHP 递归帮助

转载 作者:行者123 更新时间:2023-12-01 00:15:06 25 4
gpt4 key购买 nike

这是我的表结构:

CREATE TABLE menu (
menuid int(11) NOT NULL AUTO_INCREMENT,
menuname varchar(100) NOT NULL DEFAULT '',
menulink varchar(100) NOT NULL DEFAULT '',
menuparentId int(11) NOT NULL DEFAULT '0',
menuhasChild smallint(1) NOT NULL DEFAULT '0',
menustatus smallint(1) NOT NULL DEFAULT '1',
menuorder int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (menuid)
)

我正在使用递归函数由此创建菜单结构,但在这里失败了:

function categoriesTree($id=0){    
$s = "SELECT * FROM menu WHERE menuparentId = '".$id."'
ORDER BY menuorder, menuid ";
$rid = $this->db->query($s)->result_array();
$treeArray = array();
foreach($rid as $row){
$treeArray[$row['menuid']] = $row;
if($row['menuhasChild']==1){
$treeArray[$row['menuid']] = $this->categoriesTree(); //results in Fatal error: Maximum function nesting level of '100' reached, aborting!
}
}
retrun $treeArray;
}

此方法是 CodeIgniter 模型类中模型的一部分。有没有更好的方法来创建树?

最佳答案

是的,有更好的方法。所谓修正的先序树遍历算法。您可以通过谷歌搜索找到大量信息,而且我确信堆栈溢出也是如此。

好处是您可以仅使用 1 个查询来获取整个子树。 SELECTS 会很快,但修改会更重。

关于创建树结构所需的 PHP 递归帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5961377/

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