php tree结构,PHP-如何建立树形结构清单?

小编典典

为此,您不需要在数据库中创建2个表,您可以仅从一个表中进行维护,如下所示

+-------+---------------+---------------------------+

| id | parent_id | title |

+-------+---------------+---------------------------+

| 1 | 0 | Parent Page |

| 2 | 1 | Sub Page |

| 3 | 2 | Sub Sub Page |

| 4 | 0 | Another Parent Page |

+-------+---------------+---------------------------+

生成的数组将像

Array

(

[0] => Array

(

[id] => 1

[parent_id] => 0

[title] => Parent Page

[children] => Array

(

[0] => Array

(

[id] => 2

[parent_id] => 1

[title] => Sub Page

[children] => Array

(

[0] => Array

(

[id] => 3

[parent_id] => 1

[title] => Sub Sub Page

)

)

)

)

)

[1] => Array

(

[id] => 4

[parent_id] => 0

[title] => Another Parent Page

)

)

您需要使用下面的递归函数来实现它

function buildTree(array $elements, $parentId = 0) {

$branch = array();

foreach ($elements as $element) {

if ($element['parent_id'] == $parentId) {

$children = buildTree($elements, $element['id']);

if ($children) {

$element['children'] = $children;

}

$branch[] = $element;

}

}

return $branch;

}

$tree = buildTree($rows);

该算法非常简单:

取所有元素的数组和当前父代的ID(最初为0 / nothing / null / whatever)。

遍历所有元素。

如果某个元素的parent_id与您在1中获得的当前父ID匹配,则该元素是该父元素的子代。将其放入您当前的孩子列表中(此处:$ branch)。

使用您刚刚在3.中标识的元素的ID递归调用该函数,即找到该元素的所有子元素,并将它们添加为children元素。

返回找到的孩子列表。

2020-05-29

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值