This article mainly shares with you examples of Thinkphp recursive processing that outputs categories by level. I hope it can help you.
1. Generally, categories are stored in the database, and the relationship between categories is identified by parent_id. In development, sometimes it is necessary to display the classification according to the classification level, as shown below:
Use the recursive method, the source code is as follows:
/** * * @param array $list 为一个二维数组,存放着所有的分类,包含的字段为(分类id,分类名,parent_id) * @param number $parent_id * @param number $level * @return Ambigous <multitype:, number> */ function find_level($list,$parent_id=0,$level=1){ foreach($list as $l){ if($l['parent_id']==$parent_id){ $l['level']=$level; $arr[]=$l; $child=$this->find_level($list,$l['cat_id'],$level+1); if(is_array($child)){ $arr=array_merge($arr,$child); } } } return $arr; }
When using it, just use find_level($list) or $this->find_level($list) according to the actual situation
$list=M('category')->field('cat_id,cat_name,parent_id')->select(); $list=$this->find_level($list); $this->list=$list; $this->display();
Front file display code
<table> <foreach name="list" item="vo"> <tr> <td> <for start="1" end="$vo['level']"> </for> {$vo.cat_name}<br/> </td> </tr> </foreach> </table>
The syntax here Using Thinkphp
The above is the detailed content of Classify and output instances by level. For more information, please follow other related articles on the PHP Chinese website!