最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHPTree——php快速生成無限級分類

 更新時間:2018年03月30日 23:29:57   投稿:mdxy-dxy  
在開發(fā)中經(jīng)常需要用到樹形數(shù)據(jù),比如無限多級分類,就是典型的樹形結(jié)構(gòu)。這里面的算法,用到了遞歸思想,為了簡化開發(fā)過程,我編寫了一個工具來提升開發(fā)效率,需要的朋友可以參考下

它就是PHPTree。

git地址:https://git.oschina.net/jiusem/PHPTree.git

或從腳本之家下載 http://m.fzitv.net/codes/606002.html

最簡單的例子:

<?php 
require('PHPTree.class.php');

//原始數(shù)據(jù), 從數(shù)據(jù)庫讀出
$data = array(
	array(
		'id'=>1,
		'name'=>'book',
		'parent_id'=>0
	),
	array(
		'id'=>2,
		'name'=>'music',
		'parent_id'=>0
	),
	array(
		'id'=>3,
		'name'=>'book1',
		'parent_id'=>1
	),
	array(
		'id'=>4,
		'name'=>'book2',
		'parent_id'=>3
	)
);

$r = PHPTree::makeTree($data);
echo json_encode($r);

?>

輸出:

  [
        {
            "id": 1,
            "name": "book",
            "parent_id": 0,
            "expanded": false, //不展開子節(jié)點(diǎn)
            "children": [
                {
                    "id": 3,
                    "name": "book1",
                    "parent_id": 1,
                    "expanded": false,
                    "children": [
                        {
                            "id": 4,
                            "name": "book2",
                            "parent_id": 3,
                            "leaf": true
                        }
                    ]
                }
            ]
        },
        {
            "id": 2,
            "name": "music",
            "parent_id": 0,
            "leaf": true
        }
]

生成的數(shù)據(jù)就是樹形結(jié)構(gòu)了,可以結(jié)合ExtJS等前端框架來使用了。git中包含了一個ExtJS的demo,大家可以參考。

演示:

如果不需要使用前端框架,只是用HTML輸出,可以使用下面的方法:

$r = PHPTree::makeTreeForHtml($data);

得到一個一維數(shù)組,用 level 字段來標(biāo)識分類的層次:

array(
 array(
  'id'=>1,
  'name'=>'用戶管理',
  'parent_id'=>0,
  'level'=>0 //一級分類
 ),
 array(
  'id'=>1,
  'name'=>'用戶列表',
  'parent_id'=>1,
  'level'=>1 //二級分類
 )
 ....
);

輸出為select標(biāo)簽:

echo '<h1>PHPTree樹形結(jié)構(gòu)</h1>';
echo '<select style="width:300px;">';
foreach($r as $item){
	echo '<option>';
	//根據(jù)所在的層次縮進(jìn)
	echo str_repeat('......',$item['level']);
	echo $item['name'];
	echo '</option>';
}
echo '</select>';

演示:

git中包含了一個輸出HTML的demo,大家可以參考。

關(guān)于數(shù)據(jù)庫的設(shè)計,只需要保證包含 id 和 parent_id 字段即可,其他字段可以自行添加,不會影響數(shù)據(jù)生成。parent_id是父級ID,如果是一級分類,就設(shè)為 0 。當(dāng)然,字段也是可以配置的。請繼續(xù)往下看,我將介紹一些進(jìn)階的使用方法。

展開子節(jié)點(diǎn):

PHPTree::makeTree( $data, array(
 'expanded' => true
));

輸出的數(shù)據(jù)為:

[
        {
            id:1,
            name:'book1',
            expanded:true,//展開子節(jié)點(diǎn)
            children:[
                ...
            ]
        }
]

自定義主鍵和父鍵:

//數(shù)據(jù)庫讀出
$data = array(
 array(
  'order_id'=>1, //主鍵
  'name'=>'book1',
  'pid'=>0, //父鍵
  ...
 )
);
PHPTree::makeTree( $data, array(
 'primary_key' => 'order_id',
 'parent_key' => 'pid'
));

輸出的數(shù)據(jù)為:

[
        {
            order_id:1,
            name:'book1',
            pid:0,
            ...
        }
]

makeTreeForHtml 方法也支持配置主鍵和父鍵。

還有其他字段也可以自定義,但下面這些參數(shù)僅支持 makeTree 方法:

$r = PHPTree::makeTree($data, array(
 'expanded_key' => 'expanded',
 'children_key' => 'children',
 'leaf_key'  => 'leaf'
));

默認(rèn),這些字段的配置都是以ExtJS為參考的,如果你使用zTree框架的話,這些字段就需要重新配置了。

zTree 是一款強(qiáng)大的國產(chǎn)樹形框架,它還支持 簡單JSON格式,是一維數(shù)據(jù)格式,實(shí)際上就不需要用到PHPTree了。當(dāng)然,PHPTree輸出的數(shù)據(jù)層次感清晰,zTree也是支持的。

相關(guān)文章

  • PHP實(shí)現(xiàn)將多個文件中的內(nèi)容合并為新文件的方法示例

    PHP實(shí)現(xiàn)將多個文件中的內(nèi)容合并為新文件的方法示例

    這篇文章主要介紹了PHP實(shí)現(xiàn)將多個文件中的內(nèi)容合并為新文件的方法,涉及php編碼轉(zhuǎn)換、文件與目錄的遍歷以及文件讀寫相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • php中in_array函數(shù)用法分析

    php中in_array函數(shù)用法分析

    這篇文章主要介紹了php中in_array函數(shù)用法,以實(shí)例形式分析了PHP中in_array函數(shù)用法及相關(guān)的注意事項(xiàng),具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-11-11
  • php輸出含有“#”字符串的方法

    php輸出含有“#”字符串的方法

    這篇文章主要介紹了php輸出含有“#”字符串的方法,涉及php字符串的遍歷與轉(zhuǎn)換相關(guān)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2017-01-01
  • PHP管理依賴(dependency)關(guān)系工具 Composer 安裝與使用

    PHP管理依賴(dependency)關(guān)系工具 Composer 安裝與使用

    Composer 是PHP中用來管理依賴(dependency)關(guān)系的工具。你可以在自己的項(xiàng)目中聲明所依賴的外部工具庫(libraries),Composer會幫你安裝這些依賴的庫文件。
    2014-08-08
  • 分析五個Laravel Dusk的使用技巧

    分析五個Laravel Dusk的使用技巧

    Laravel Dusk是 Laravel 的一個表達(dá)性強(qiáng)、易于使用,且功能強(qiáng)大的瀏覽器自動化測試工具。通過 Dusk 可以以編程的方式測試 JavaScript 驅(qū)動的應(yīng)用程序。在使用 Dusk 編寫測試案例時,我經(jīng)常遇到一些限制?,F(xiàn)在我在本文中將這些情況以及如何克服分享給大家。
    2021-05-05
  • Session保存到數(shù)據(jù)庫的php類分享

    Session保存到數(shù)據(jù)庫的php類分享

    Session保存到數(shù)據(jù)庫的php類,需要的朋友可以參考下。
    2011-10-10
  • PHP中SimpleXML函數(shù)用法分析

    PHP中SimpleXML函數(shù)用法分析

    這篇文章主要介紹了PHP中SimpleXML函數(shù)用法,以實(shí)例形式詳細(xì)分析了采用SimpleXML函數(shù)操作XML文件的技巧,并附帶說明了相關(guān)的SimpleXML函數(shù),需要的朋友可以參考下
    2014-11-11
  • PHP實(shí)現(xiàn)的限制IP投票程序IP來源分析

    PHP實(shí)現(xiàn)的限制IP投票程序IP來源分析

    這篇文章主要介紹了PHP實(shí)現(xiàn)的限制IP投票程序,針對投票程序中客戶端IP的判斷方法進(jìn)行了深入分析,并給出了偽造IP的方法供大家參考了解,需要的朋友可以參考下
    2016-05-05
  • php創(chuàng)建、獲取cookie及基礎(chǔ)要點(diǎn)分析

    php創(chuàng)建、獲取cookie及基礎(chǔ)要點(diǎn)分析

    這篇文章主要介紹了php創(chuàng)建、獲取cookie及基礎(chǔ)要點(diǎn),實(shí)例分析了php操作cookie的技巧,需要的朋友可以參考下
    2015-01-01
  • PHP保存session到memcache服務(wù)器的方法

    PHP保存session到memcache服務(wù)器的方法

    這篇文章主要介紹了PHP保存session到memcache服務(wù)器的方法,涉及PHP操作session及memcache的相關(guān)技巧,需要的朋友可以參考下
    2016-01-01

最新評論

交城县| 林西县| 固始县| 内黄县| 镇原县| 南川市| 额敏县| 长子县| 潞城市| 宽甸| 鹰潭市| 吉安县| 梨树县| 亳州市| 阳城县| 湘潭县| 建始县| 瑞安市| 唐海县| 重庆市| 双桥区| 南宫市| 偏关县| 隆子县| 菏泽市| 奉贤区| 石泉县| 江口县| 大宁县| 政和县| 墨脱县| 崇明县| 昭平县| 静海县| 淅川县| 彰化县| 永兴县| 昭苏县| 延庆县| 新余市| 兴文县|