![](https://i-blog.csdnimg.cn/blog_migrate/c67ce83265e62968ccd634d734be9501.png)
<?php
namespace app\index\controller;
use think\Db;
class Index
{
public function index()
{
echo '<pre>';
$pid = 0;
$level = 2;//层数
$tree = $this->generateTree($pid,$level);
print_r($tree);
}
public function generateTree( $pid = 0 , $level = 0){
$array = Db::name('test')->where( ['pid' => $pid] )->select();
$b = array_column($array,'sort');
array_multisort($b,SORT_DESC ,$array);
if ($array != false) {
$num = $level;
foreach ($array as $key => $val) {
if ($level >0 ) {
$level--;
$array[$key]['son'] = $this->generateTree($val['id'], $level);
}
if ($level < 2) {
$level = $num;
}
}
}
return $array;
}
}
Array
(
[0] => Array
(
[name] => 电器
[pid] => 0
[sort] => 1
[id] => 27
[son] => Array
(
[0] => Array
(
[name] => 彩电
[pid] => 27
[sort] => 2
[id] => 28
[son] => Array
(
[0] => Array
(
[name] => 海信
[pid] => 28
[sort] => 2
[id] => 30
)
[1] => Array
(
[name] => 小米
[pid] => 28
[sort] => 1
[id] => 31
)
)
)
[1] => Array
(
[name] => 空调
[pid] => 27
[sort] => 1
[id] => 29
[son] => Array
(
)
)
)
)
)