php無限級分類排序問題(php自然排序)

本文目錄一覽:

php無限極分類查找父級生成樹形結構子級在最頂層,怎麼辦?

一般這種問題需要使用嵌套函數,PHP也是支持嵌套函數的,就是不停的調用自身,直到符合條件後退出函數循環,這樣就能找出它所有的父級了,在c語言的時候也學過,理解起來還是比較容易的。

php 幾種常用的遞歸 無限極分類

 /**

     * 遞歸實現無限極分類

     * @param $array 分類數據

     * @param $pid 父ID

     * @param $level 分類級別

     * @return $list 分好類的數組 直接遍歷即可 $level可以用來遍歷縮進

     */

    function getTree($array, $pid =0, $level = 0){

        //聲明靜態數組,避免遞歸調用時,多次聲明導致數組覆蓋

        static $list = [];        foreach ($array as $key = $value){            //第一次遍歷,找到父節點為根節點的節點 也就是pid=0的節點

            if ($value[‘pid’] == $pid){                //父節點為根節點的節點,級別為0,也就是第一級

                $value[‘level’] = $level;                //把數組放到list中

                $list[] = $value;                //把這個節點從數組中移除,減少後續遞歸消耗

                unset($array[$key]);                //開始遞歸,查找父ID為該節點ID的節點,級別則為原級別+1

                getTree($array, $value[‘id’], $level+1);

            }

        }

php遞歸問題(無限極分類)

首先運行的是catsort($arr,0,1);這樣循環到北京市,滿足循環里的if條件,於是運行catsort($arr,1,2);在這裡循環到海定區的時候滿足if,於是運行catsort($arr,3,3);在catsort($arr,3,3)裡面,循環中沒有一條是滿足if條件的,也就是沒有parent_id=3的元素,所以就沒再執行catsort方法了。return之後繼續catsort($arr,1,2);的循環,循環到朝陽區。

php遞歸無限極分類怎麼弄

給個函數你,調用get_category()就是一個數組格式的結果

function get_category($parent_id=0){

$arr=array();

$sql = “select * from category where parent_id=$parent_id”;//查詢子級數據

$result = array(a_object,b_object,,,)=sql_query($sql);//查詢結果一個數組或列表格式,自己完善。

if($result){

foreach($result as $re){//循環數組

if(get_category($re.id))//如果子級不為空

$re[‘child’] = get_category($re.id);

$arr[] = $re;

}

return $arr;

}

php無限極分類實現的方法?

初始化的數據

//初始化原始數據(id=編號,name=顯示名稱,pid=父級目錄id,sort=排序順序)$data[1] = array(‘id’=’1′,’name’=’一級目錄A’,’pid’=’0′,’sort’=’1′);

$data[2] = array(‘id’=’2′,’name’=’一級目錄B’,’pid’=’0′,’sort’=’2′);

$data[3] = array(‘id’=’3′,’name’=’一級目錄C’,’pid’=’0′,’sort’=’3′);

$data[4] = array(‘id’=’4′,’name’=’一級目錄D’,’pid’=’0′,’sort’=’4′);

$data[5] = array(‘id’=’5′,’name’=’二級目錄A-1′,’pid’=’1′,’sort’=’1’);

$data[6] = array(‘id’=’6′,’name’=’二級目錄A-2′,’pid’=’1′,’sort’=’2’);

$data[7] = array(‘id’=’7′,’name’=’二級目錄A-3′,’pid’=’1′,’sort’=’3’);

$data[8] = array(‘id’=’8′,’name’=’二級目錄B-1′,’pid’=’2′,’sort’=’1’);

$data[9] = array(‘id’=’9′,’name’=’二級目錄B-2′,’pid’=’2′,’sort’=’2’);

$data[10] = array(‘id’=’10’,’name’=’二級目錄B-3′,’pid’=’2′,’sort’=’3′);

$data[11] = array(‘id’=’11’,’name’=’二級目錄C-1′,’pid’=’3′,’sort’=’2′);

$data[12] = array(‘id’=’12’,’name’=’二級目錄D-1′,’pid’=’4′,’sort’=’1′);

$data[13] = array(‘id’=’13’,’name’=’二級目錄D-2′,’pid’=’4′,’sort’=’2′);

$data[14] = array(‘id’=’14’,’name’=’三級目錄A-2-1′,’pid’=’6′,’sort’=’1′);

$data[15] = array(‘id’=’15’,’name’=’三級目錄A-2-2′,’pid’=’6′,’sort’=’2′);

$data[16] = array(‘id’=’16’,’name’=’三級目錄C-1-1′,’pid’=’11’,’sort’=’1′);

$data[17] = array(‘id’=’17’,’name’=’三級目錄B-2-1′,’pid’=’9′,’sort’=’2′);

顯示樹結構

function printTree($data,$level=0){    foreach($data as $key=$value){        for($i=0;$i=$level;$i++){            echo ’emsp;emsp;’;

        }        echo $value[‘name’];        echo ‘br’;        if(!empty($value[‘children’])){

            printTree($value[‘children’],$level+1);

        }

    }

}

使用遞歸的方式獲取無限極分類數組

function getNodeTree($list,$tree,$pid=0){    foreach($list as $key=$value){        if($pid == $value[‘pid’]){

            $tree[$value[‘id’]]=$value;            unset($list[$key]);

            getNodeTree($list,$tree[$value[‘id’]][‘children’],$value[‘id’]);

        }

    }

}

使用引用-無限極分類

function createNodeTree($list,$tree){    foreach($list as $key=$node){        if(isset($list[$node[‘pid’]])){

            $list[$node[‘pid’]][‘children’][] = $list[$key];

        }else{

            $tree[] = $list[$node[‘id’]];

        }

    }

}

調用

//遞歸-無限極分類調用getNodeTree($data,$tree);

printTree($tree);//使用引用-無限極分類調用createNodeTree($data,$tree);

printTree($tree);

原創文章,作者:X0LP7,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/129459.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
X0LP7的頭像X0LP7
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相關推薦

  • Python官網中文版:解決你的編程問題

    Python是一種高級編程語言,它可以用於Web開發、科學計算、人工智慧等領域。Python官網中文版提供了全面的資源和教程,可以幫助你入門學習和進一步提高編程技能。 一、Pyth…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • 如何解決WPS保存提示會導致宏不可用的問題

    如果您使用過WPS,可能會碰到在保存的時候提示「文件中含有宏,保存將導致宏不可用」的問題。這個問題是因為WPS在默認情況下不允許保存帶有宏的文件,為了解決這個問題,本篇文章將從多個…

    編程 2025-04-29
  • Java Thread.start() 執行幾次的相關問題

    Java多線程編程作為Java開發中的重要內容,自然會有很多相關問題。在本篇文章中,我們將以Java Thread.start() 執行幾次為中心,為您介紹這方面的問題及其解決方案…

    編程 2025-04-29
  • Python爬蟲亂碼問題

    在網路爬蟲中,經常會遇到中文亂碼問題。雖然Python自帶了編碼轉換功能,但有時候會出現一些比較奇怪的情況。本文章將從多個方面對Python爬蟲亂碼問題進行詳細的闡述,並給出對應的…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • NodeJS 建立TCP連接出現粘包問題

    在TCP/IP協議中,由於TCP是面向位元組流的協議,發送方把需要傳輸的數據流按照MSS(Maximum Segment Size,最大報文段長度)來分割成若干個TCP分節,在接收端…

    編程 2025-04-29
  • 如何解決vuejs應用在nginx非根目錄下部署時訪問404的問題

    當我們使用Vue.js開發應用時,我們會發現將應用部署在nginx的非根目錄下時,訪問該應用時會出現404錯誤。這是因為Vue在刷新頁面或者直接訪問非根目錄的路由時,會認為伺服器上…

    編程 2025-04-29
  • 如何解決egalaxtouch設備未找到的問題

    egalaxtouch設備未找到問題通常出現在Windows或Linux操作系統上。如果你遇到了這個問題,不要慌張,下面我們從多個方面進行詳細闡述解決方案。 一、檢查硬體連接 首先…

    編程 2025-04-29
  • Python折扣問題解決方案

    Python的折扣問題是在計算購物車價值時常見的問題。在計算時,需要將原價和折扣價相加以得出最終的價值。本文將從多個方面介紹Python的折扣問題,並提供相應的解決方案。 一、Py…

    編程 2025-04-28

發表回復

登錄後才能評論