$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', ],];
Sort over will draw
$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, ], ];
Reply content:
$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', ],];
Sort over will draw
$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;}