The content of this article is about how to achieve the classification tree effect in PHP? (Attached is the code), which has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
Sometimes we need to display classified data in a tree-like effect so that we can see the hierarchical organizational relationship at a glance. The implementation is as follows:
Note: The classification I am talking about is Infinitus classification. , there are three table field names involved in the following function: id pid name. If the defined names are different, please give the field an alias corresponding to the id pid name when querying the classification list data. For example, if your pid table field name is defined as parent_id, then query Give the field an alias of "parent_id as pid ";
The function is as follows:
/** * $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; }
Usage example:
<?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>
Effect:
Related recommendations:
How does php generate json? PHP generates json method code
php implements perpetual calendar Complete code
The above is the detailed content of How to achieve classification tree effect in php? (with code). For more information, please follow other related articles on the PHP Chinese website!