gpt4 book ai didi

php - PHP/MySQL 中的简单递归树

转载 作者:可可西里 更新时间:2023-11-01 08:06:02 24 4
gpt4 key购买 nike

我在 MySQL 中有这个表:

id       name            mother
1 grandma 0
2 myuncle 1
3 mymom 1
4 me 3
5 mysister 3
6 myson 4
7 new_grandma_son 1

我将此信息保存在一个名为 data[] 的数组中

$data=array(
array("id"=>1,"name"=>"grandma", "mother"=>0),
array("id"=>2,"name"=>"myuncle", "mother"=>1),
array("id"=>3,"name"=>"mymom", "mother"=>1),
array("id"=>4,"name"=>"me", "mother"=>3),
array("id"=>5,"name"=>"mysister", "mother"=>3),
array("id"=>6,"name"=>"myson", "mother"=>4),
array("id"=>7,"name"=>"new_grandma_son","mother"=>1)
);

为了制作家谱,我使用了这个递归函数:

function tree($data, $mom = 0, $level = 0){
foreach ($data as $row){
if ($row['mother'] == $mom) {
echo str_repeat("-", $level).$row['name']."<br>";
tree($data, $row['id'], $level);
}
else $level++;
}
}

当我调用函数 tree($data); 时,它显示如下:

grandma
-myuncle (level 1)
-mymom
----me (level 4??)
---------myson (level 9??)
----mysister
----new_grandma_son (level 4??)

我在 else $level++; 中有错误,因为在 $row['mother'] != $mom 时添加级别,遍历所有行,但我不知道该怎么做。有谁知道?谢谢。

解决方案(作者:Frits van Campen):

               tree($data, $row['id'], $level+1);

// (eliminate this else $level++; )

谢谢!

最佳答案

function tree($data,$mom=0,$level=0){
foreach($data as $row){
if($row['mother']==$mom){
echo str_repeat("-",$level).$row['name']."<br>";
tree($data,$row['id'],$level+1);
}
}
}

认为这可以修复您的代码。你能提供 $data 以便我测试吗?

关于php - PHP/MySQL 中的简单递归树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20286513/

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