ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ### 递归算法 遍历数组,根据每条数据的id值去寻找所有parent\_id值等于自己id值的数据,直到找不到为止。 `~~~ ``` /**  * 无限极分类(递归方式)  *@param  array $categoryies 需要分类的数组  *@param  int   $parent_id   需要查询的顶级分类id,默认为0 表示顶级分类  *@param  int   $level       默认0 表示是顶级分类  增加无限极分类的层级标识 用于在模板显示缩进层级关系    *@return  array 返回一个已经无限极分类完成的数组  */ function limit_category($categoryies, $parent_id = 0, $level = 0) {     //定义一个静态数组 用于保存每次遍历得到的结果     static $res = [];     //遍历数组 进行数据判断     foreach($categoryies as $key => $val)     {         if($val['parent_id'] == $parent_id)         {             $val['level'] = $level;             //是要找的父级分类内容             $res[] = $val;             //递归点 当前分类有可能有子分类             limit_category($categoryies, $val['id'], $level + 1); //注意这里是id不是parent_id !!         }     }     return $res; } ``` 最后返回的数组结构如下: ``` array (size=6)   0 =>      array (size=5)       'cat_id' => int 80       'cname' => string '软件开发' (length=12)       'is_show' => int 1       'parent_id' => int 0       'level' => int 0   1 =>      array (size=5)       'cat_id' => int 7       'cname' => string 'php' (length=3)       'is_show' => int 1       'parent_id' => int 80       'level' => int 1   2 =>      array (size=5)       'cat_id' => int 6       'cname' => string 'mysql' (length=5)       'is_show' => int 1       'parent_id' => int 80       'level' => int 1   3 =>      array (size=5)       'cat_id' => int 74       'cname' => string 'Linux' (length=5)       'is_show' => int 1       'parent_id' => int 80       'level' => int 1   4 =>      array (size=5)       'cat_id' => int 87       'cname' => string '生活随笔' (length=12)       'is_show' => int 1       'parent_id' => int 0       'level' => int 0   5 =>      array (size=5)       'cat_id' => int 94       'cname' => string '邻居' (length=6)       'is_show' => int 1       'parent_id' => int 0       'level' => int 0 ``` ~~~