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

php實現無限極分類

spa var 欄目 所有 cti subst pid Go 查詢

生成無限極分類

private function GetTree($arr,$pid,$step){
    global $tree;
    foreach($arr as $key=>$val) {
        if($val[‘pid‘] == $pid) {
            $flg = str_repeat(‘└―‘,$step);
            $val[‘name‘] = $flg.$val[‘name‘];
            $tree[] = $val;
            $this->GetTree($arr , $val[‘cid‘] ,$step
+1); } } return $tree; }
調用:
$newarr = $this->GetTree($arr, 0, 0);

根據子類id查找出所有父級分類信息

方法一:

 //$arr 所有分類列表
 //$id 父級分類id
public static function get_parent_list($arr,$id)
{
        static $list=array();
        foreach($arr as $u)
       {
            if($u[‘id‘]== $id)
            {   //父級分類id等於所查找的id
$list[]=$u; if($u[‘parent_id‘]>0) { self::get_parent_list($arr,$u[‘parent_id‘]); } } } return $list; }

方法二:遞歸查詢取分類信息

// $id  要查詢的 子欄目id 
public static function get_parents($id
) { static $list = []; // Yii2 框架 $cat_data = Category::findOne($id)->toarray(); if($cat_data) { $list[] = $cat_data; $id = $cat_data[‘parent_id‘]; if($cat_data[‘parent_id‘] > 0) { self::get_parents($id); } } return $list; }

根據父id獲得所有下級子類id的數據

//$id = 父級id  $array = 所有分類
public function getSon($id,$array)
{
        static $list;
        foreach ($array as $k => $v)
        {
            if($v[‘parent_id‘] == $id)
            {
                $list[] = $array[$k];
                self::getSon($v[‘id‘],$array);
            }
        }
        return $list;
}

php實現無限極分類