Maison  >  Article  >  développement back-end  >  Comment générer rapidement des catégories illimitées en php (avec code)

Comment générer rapidement des catégories illimitées en php (avec code)

php中世界最好的语言
php中世界最好的语言original
2018-05-17 11:58:061556parcourir

Cette fois, je vais vous montrer comment générer rapidement des classifications illimitées en PHP (avec du code). Quelles sont les précautions pour générer rapidement des classifications infinies en PHP Voici des cas pratiques, prenons un. regarder.

L'exemple le plus simple :

<?php 
require(&#39;PHPTree.class.php&#39;);
//原始数据, 从数据库读出
$data = array(
	array(
		&#39;id&#39;=>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);
?>

Sortie :

[
{
"id": 1,
"name" : "book",
"parent_id": 0,
"expanded": false, //Ne pas développer les nœuds enfants
"children": [
"children" "id": 3 ,
"name": "book1",
"parent_id": 1,
"expanded": false,
"children": [
                                           ,
"name": "book2 ",
"parent_id": 3,
"leaf" : true
                                                                                                                                                 
                                                                                                            }
]


Les données générées sont une structure arborescente, qui peut être utilisé en conjonction avec des frameworks front-end tels que ExtJS. Git contient une démo d'ExtJS, à laquelle vous pouvez vous référer.

Démonstration :




Si vous n'avez pas besoin d'utiliser un framework front-end et utilisez simplement la sortie HTML, vous pouvez utiliser la méthode suivante :

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

Obtenez un

tableau unidimensionnel

, utilisez le champ de niveau pour identifier le niveau de classification :

Sortie en tant que balise de sélection :

Démo :

Git inclut une démo qui génère du HTML , vous pouvez vous y référer.

关于数据库的设计,只需要保证包含 id 和 parent_id 字段即可,其他字段可以自行添加,不会影响数据生成。parent_id是父级ID,如果是一级分类,就设为 0 。当然,字段也是可以配置的。请继续往下看,我将介绍一些进阶的使用方法。

展开子节点:

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

输出的数据为:

[
        {
            id:1,
            name:'book1',
            expanded:true,//展开子节点
            children:[
                ...
            ]
        }
]

自定义主键和父键:

//数据库读出
$data = array(
 array(
  'order_id'=>1, //主键
  'name'=>'book1',
  'pid'=>0, //父键
  ...
 )
);
PHPTree::makeTree( $data, array(
 'primary_key' => 'order_id',
 'parent_key' => 'pid'
));

输出的数据为:

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

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

还有其他字段也可以自定义,但下面这些参数仅支持 makeTree 方法:

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

默认,这些字段的配置都是以ExtJS为参考的,如果你使用zTree框架的话,这些字段就需要重新配置了。

zTree 是一款强大的国产树形框架,它还支持 简单JSON格式,是一维数据格式,实际上就不需要用到PHPTree了。当然,PHPTree输出的数据层次感清晰,zTree也是支持的。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

PHP动态获取函数参数步骤详解

PHP原型模式案例解析

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn