この記事では主に、レベル別にカテゴリを出力する Thinkphp の再帰処理の例を紹介します。お役に立てれば幸いです。
1. 通常、カテゴリはデータベースに保存され、カテゴリ間の関係はparent_idによって識別されます。開発中、以下のように分類のレベルに応じて分類を表示する必要がある場合があります:
再帰的メソッドを使用します。ソースコードは次のとおりです:
/** * * @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; }
それを使用する場合、find_level($list)を使用するか、実際の状況に応じて$this->find_level($list)が実行します
$list=M('category')->field('cat_id,cat_name,parent_id')->select(); $list=$this->find_level($list); $this->list=$list; $this->display();
フロントファイル表示コード
<table> <foreach name="list" item="vo"> <tr> <td> <for start="1" end="$vo['level']"> </for> {$vo.cat_name}<br/> </td> </tr> </foreach> </table>
ここで使用される構文は Thinkphp です
以上がインスタンスをレベルごとに分類して出力するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。