php無限級分類示例,php無限級分類示例怎麼用

本文目錄一覽:

php 遞歸問題,想要將數據按照無限極分類的樣式顯示出來

首先 將json 解碼成數組, 用json_decode 函數 注意 一定要加上第二個參數 否則他會返回一個對象。接下來就是地遞歸了。這是一個最簡單的遞歸只要逐個遍歷即可。

下面是完整的代碼:

$data= json_decode($str,true);

$options = getChildren($data);

function getChildren($parent,$deep=0) {

foreach($parent as $row) {

$data[] = array(“id”=$row[‘id’], “name”=$row[‘name’],”pid”=$row[‘parentid’],’deep’=$deep);

if ($row[‘childs’]) {

$data = array_merge($data, getChildren($row[‘childs’], $deep+1));

}

}

return $data;

}

?

select name=”” id=””

?php  foreach ($options as $row) { ?

option value=”?php echo $row[‘id’] ?”?php echo str_pad(“”,$row[‘deep’]*3, “-“,STR_PAD_RIGHT); ??php echo $row[‘name’]; ?/option

?php } ?

/select

以上代碼已測試通過 效果圖如下

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);

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無限極分類

function genTree5($items) { 

    foreach ($items as $item) 

        $items[$item[‘pid’]][‘son’][$item[‘id’]] = $items[$item[‘id’]]; 

    return isset($items[0][‘son’]) ? $items[0][‘son’] : array(); 

}

超級爽的函數,格式可能不一樣,但肯定有用,樹狀結構的輸出

什麼是 無限極分類???(PHP。資料庫)

那是一種關聯關係….sql 里可以叫”自連接” 假設:表 Category 有以下欄位: Id(PK),Cate_Name(varchar),Cate_Parent_Id(int) 數據: Id(編號ID) Cate_Name(類別名稱) Cate_Parent_Id(父級Id) 1 BaseCategory 0 2 News 1 3 Article 1 4 Story 3 說明: Id 為 1 的基類別(沒有父級類別) News,Article 為 基類別下的子分類 Story 為 Article 下的子分類 層次關係: 0 – 2 – 3 – 4 這樣就可以簡單實現無限分類的資料庫的設計了 使用: 給出Id 獲取到它的父類別和所有子類別 Function getParentCategory($Id){ $sql = “select * from Category where Id = (select Cate_Parent_Id from Category where Id = $Id)”; $rs = mysql_query($sql,$conn); …… //省事期間,給出偽代碼吧 if(記錄不存在 或者 $Id = 1){ return false; //無父級或不存在 }else{ return 查詢出的父級數據數組; } } Function getChildCategory($PId){ $sql = “select * from Category where Cate_Parent_Id = $PId”; 存在則返回數據數組 否則返回false } 上面只是簡單說明下大致思路.. php,J2ee的我沒手寫過,都是通過支持ORM的MVC框架去配置出來的. asp的倒是寫過,需要的話,可以發你 只要邏輯關係整清楚了,就不難了…至於頁面展示,可以用JS或者AJAX

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;

}

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-01 10:30
下一篇 2024-12-01 10:30

相關推薦

  • PHP和Python哪個好找工作?

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

    編程 2025-04-29
  • 北化教務管理系統介紹及開發代碼示例

    本文將從多個方面對北化教務管理系統進行介紹及開發代碼示例,幫助開發者更好地理解和應用該系統。 一、項目介紹 北化教務管理系統是一款針對高校學生和教職工的綜合信息管理系統。系統實現的…

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

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

    編程 2025-04-29
  • 選擇大容量免費雲盤的優缺點及實現代碼示例

    雲盤是現代人必備的工具之一,雲盤的容量大小是選擇雲盤的重要因素之一。本文將從多個方面詳細闡述使用大容量免費雲盤的優缺點,並提供相應的實現代碼示例。 一、存儲空間需求分析 不同的人使…

    編程 2025-04-29
  • Python調字型大小: 用法介紹字型大小調整方法及示例代碼

    在Python中,調整字型大小是很常見的需求,因為它能夠使輸出內容更加直觀、美觀,並且有利於閱讀。本文將從多個方面詳解Python調字型大小的方法。 一、內置函數實現字型大小調整 Python…

    編程 2025-04-29
  • Corsregistry.a的及代碼示例

    本篇文章將從多個方面詳細闡述corsregistry.a,同時提供相應代碼示例。 一、什麼是corsregistry.a? corsregistry.a是Docker Regist…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • Python Flask系列完整示例

    Flask是一個Python Web框架,在Python社區中非常流行。在本文中,我們將深入探討一些常見的Flask功能和技巧,包括路由、模板、表單、資料庫和部署。 一、路由 Fl…

    編程 2025-04-28
  • 微信mac版歷史版完整代碼示例與使用方法

    微信是一款廣受歡迎的即時通訊軟體,為了方便用戶在Mac電腦上也能使用微信,微信團隊推出了Mac版微信。本文將主要講解微信mac版歷史版的完整代碼示例以及使用方法。 一、下載微信ma…

    編程 2025-04-28
  • 使用Python讀取微信步數的完整代碼示例

    本文將從多方面詳細介紹使用Python讀取微信步數的方法,包括使用微信Web API和使用Python爬蟲獲取數據,最終給出完整的代碼示例。 一、使用微信Web API獲取微信步數…

    編程 2025-04-28

發表回復

登錄後才能評論