php 按pid排序并给出深度
本文介绍了php 按pid排序并给出深度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
$arr=[
[
'id'=>1,
'pid'=>0,
'name'=>'name1',
],
[
'id'=>2,
'pid'=>0,
'name'=>'name2',
],
[
'id'=>3,
'pid'=>0,
'name'=>'name3',
],
[
'id'=>4,
'pid'=>1,
'name'=>'name4',
],
[
'id'=>5,
'pid'=>4,
'name'=>'name5',
],
[
'id'=>6,
'pid'=>2,
'name'=>'name6',
],
[
'id'=>7,
'pid'=>2,
'name'=>'name7',
],
];
排序过会得出
$result=[
[
'id'=>1,
'pid'=>0,
'name'=>'name1',
'level'=>1,
],
[
'id'=>4,
'pid'=>1,
'name'=>'name4',
'level'=>2,
],
[
'id'=>5,
'pid'=>4,
'name'=>'name5',
'level'=>3,
],
[
'id'=>2,
'pid'=>0,
'name'=>'name2',
'level'=>1,
],
[
'id'=>7,
'pid'=>2,
'name'=>'name7',
'level'=>'2',
],
[
'id'=>6,
'pid'=>2,
'name'=>'name6',
'level'=>2,
]
[
'id'=>3,
'pid'=>0,
'name'=>'name3',
'level'=>1,
],
];
解决方案
function treelist($data, $pid, $deep = 1)
{
static $tree = array();
foreach ($data as $row) {
if ($row ['pid'] == $pid) {
$row ['lever'] = $deep;
$tree [] = $row;
treelist($data, $row ['id'], $deep + 1);
}
}
return $tree;
}
这篇关于php 按pid排序并给出深度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文