mysql 简单递归_PHP / MySQL中的简单递归树

我在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']."
";

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

}

else $level++;

}

}

当我调用函数树($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++; )

谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值