1. 程式人生 > 實用技巧 >php實現無限極分類

php實現無限極分類

面試的時候被問到無限極分類的設計和實現,比較常見的做法是在建表的時候,增加一個PID欄位用來區別自己所屬的分類

    $array = array(
        array('id' => 1, 'pid' => 0, 'name' => '河北省'),
        array('id' => 2, 'pid' => 0, 'name' => '北京市'),
        array('id' => 3, 'pid' => 1, 'name' => '邯鄲市'),
        array('id' => 4, 'pid'
=> 2, 'name' => '朝陽區'), array('id' => 5, 'pid' => 2, 'name' => '通州區'), array('id' => 6, 'pid' => 4, 'name' => '望京'), array('id' => 7, 'pid' => 4, 'name' => '酒仙橋'), array('id' => 8, 'pid' => 3, 'name' => '永年區'), array(
'id' => 9, 'pid' => 1, 'name' => '武安市'), );

資料在資料庫中儲存大概是這個樣子,怎麼實現無限極遞迴呢,有兩種常用的做法,遞迴和引用演算法

function getTree($arr,$pid=0,$level=0){
        static $list=[];
        foreach($arr as $key => $value){
            if($value['pid'] == $pid){
                $value['level']=$level;
                $list[]
=$value; unset($arr[$key]); getTree($arr,$value['id'],$level+1); } } return $list; } $handle_arr = getTree($array); print_r($handle_arr);