php如何?分類樹狀的效果?(附代碼)

來源:互聯網
上載者:User
本篇文章給大家帶來的內容是關於php如何?分類樹狀的效果?(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所協助。

我們有時候需要將分類資料按樹狀效果展示出來,能一眼就看出來層級的組織關係,實現如下:

注意:我所講的分類為無限極分類 ,如下的函數所涉及的表欄位名有三個 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 = "&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>

效果:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.