国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

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

2024-05-05 00:03:00
字體:
供稿:網(wǎng)友

它就是PHPTree。

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

最簡單的例子:

<?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é)點
            "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,大家可以參考。

演示:

PHPTree,php無限級分類

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

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

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

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

輸出為select標簽:

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

演示:

PHPTree,php無限級分類

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

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

展開子節(jié)點:

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

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

[
        {
            id:1,
            name:'book1',
            expanded:true,//展開子節(jié)點
            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'));

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

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


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 汨罗市| 黄龙县| 额尔古纳市| 阜城县| 广元市| 凤翔县| 紫阳县| 肇州县| 广昌县| 仙居县| 塘沽区| 和龙市| 兴海县| 邛崃市| 句容市| 岫岩| 贵南县| 宣恩县| 凤城市| 嘉义市| 新郑市| 庐江县| 什邡市| 蕉岭县| 南昌市| 含山县| 团风县| 金湖县| 隆昌县| 乌拉特中旗| 盐源县| 定安县| 中宁县| 巴彦淖尔市| 庆云县| 恩平市| 和政县| 芦溪县| 东台市| 沽源县| 电白县|