php 按pid排序并给出深度
程序员文章站
2024-01-31 22:44:52
...
$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,
],
];
回复内容:
$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;
}
下一篇: 大数定律和MySQL静态分片_MySQL
推荐阅读