この記事の内容は、PHP で分類ツリー効果を実現する方法についてです。 (コードを添付します) ある程度参考になるので、困っている友達は参考にしていただければ幸いです。
階層的な組織関係を一目で確認できるように、分類されたデータをツリー状に表示する必要がある場合があります。実装は次のとおりです:
注: 私の分類は次のとおりです。ここで話しているのは Infinitus 分類です。次の関数には 3 つのテーブル フィールド名が含まれています: id pid name。定義された名前が異なる場合は、分類リスト データをクエリするときにフィールドに id pid name に対応するエイリアスを付けてください。たとえば、pid テーブルのフィールド名がparent_idとして定義されている場合、フィールドに「parent_id as pid」というエイリアスをクエリします。
関数は次のとおりです:
/** * $list 为查询 出来的二维数组 **/ function getTree($list,$pid=0,$itemprefix = '') { static $icon = array('│', '├', '└'); static $nbsp = " "; static $arr = array(); $number = 1; foreach($list as $row) { if($row['pid'] == $pid) { $brotherCount = 0; //判断当前有多少个兄弟分类 foreach($list as $r) { if($row['pid'] == $r['pid']) { $brotherCount++; } } if($brotherCount >0) { $j = $k = ''; if($number == $brotherCount) { $j .= $icon[2]; $k = $itemprefix ? $nbsp : ''; }else{ $j .= $icon[1]; $k = $itemprefix ? $icon[0] : ''; } $spacer = $itemprefix ? $itemprefix . $j : ''; $row['name'] = $spacer.$row['name']; $arr[] = $row; $number++; getTree($list,$row['id'],$itemprefix . $k . $nbsp); } } } return $arr; }
使用例:
<?php header("Content-type:text/html;Charset=utf8"); function getTree($list,$pid=0,$itemprefix = '') { static $icon = array('│', '├', '└'); static $nbsp = " "; static $arr = array(); $number = 1; foreach($list as $row) { if($row['pid'] == $pid) { $brotherCount = 0; //判断当前有多少个兄弟分类 foreach($list as $r) { if($row['pid'] == $r['pid']) { $brotherCount++; } } if($brotherCount >0) { $j = $k = ''; if($number == $brotherCount) { $j .= $icon[2]; $k = $itemprefix ? $nbsp : ''; }else{ $j .= $icon[1]; $k = $itemprefix ? $icon[0] : ''; } $spacer = $itemprefix ? $itemprefix . $j : ''; $row['name'] = $spacer.$row['name']; $arr[] = $row; $number++; getTree($list,$row['id'],$itemprefix . $k . $nbsp); } } } return $arr; } //$list 模拟数据库查询出来的数据 $list = array(); $list = [ ['id'=>1,'pid'=>0,'name'=>'总经理'], ['id'=>9,'pid'=>7,'name'=>'人事二组职员2'], ['id'=>2,'pid'=>1,'name'=>'人事部经理'], ['id'=>3,'pid'=>2,'name'=>'人事一组长'], ['id'=>13,'pid'=>12,'name'=>'技术一组职员1'], ['id'=>4,'pid'=>3,'name'=>'人事一组职员1'], ['id'=>5,'pid'=>3,'name'=>'人事一组职员2'], ['id'=>6,'pid'=>3,'name'=>'人事一组职员3'], ['id'=>7,'pid'=>2,'name'=>'人事二组长'], ['id'=>8,'pid'=>7,'name'=>'人事二组职员1'], ['id'=>10,'pid'=>7,'name'=>'人事二组职员3'], ['id'=>15,'pid'=>12,'name'=>'技术一组职员3'], ['id'=>11,'pid'=>1,'name'=>'技术部经理'], ['id'=>12,'pid'=>11,'name'=>'技术一组长'], ['id'=>14,'pid'=>12,'name'=>'技术一组职员2'], ]; //执行函数 $list = getTree($list); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>层级下拉列表效果</title> <select name="" id=""> <?php foreach($list as $row): ?> <option value=""> <?php echo $row['name']; ?></option> <?php endforeach;?> </select> </head> <body> </body> </html>
効果:
関連する推奨事項:
php はどのようにして json を生成しますか? PHP は json メソッド コードを生成します
php はビット演算を使用して整数の加算、減算、乗算、除算を実装し、テストします (コード例)
以上がPHPで分類ツリー効果を実現するにはどうすればよいですか? (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。