//id作为索引,pid 为父索引 function tree(&$list,$pid=0){ $tree=[]; foreach ($list as $key=>$item){ if ($item['pid']===$pid){ $tree[$item['id']]=$item; unset($list[key]); //删除当前项,减小递归压力 $tree[$item['id']]['children']=tree($list,$item['id']); //使用children 接收递归出的子数组 } } return $tree; }