Maison  >  Article  >  développement back-end  >  PHPTree - php génère rapidement des compétences classifications_php illimitées

PHPTree - php génère rapidement des compétences classifications_php illimitées

不言
不言original
2018-04-04 10:20:324377parcourir

Les données arborescentes sont souvent utilisées dans le développement, comme la classification infinie à plusieurs niveaux, qui est une structure arborescente typique. L'algorithme ici utilise la pensée récursive. Afin de simplifier le processus de développement, j'ai écrit un outil pour améliorer l'efficacité du développement. Les amis dans le besoin peuvent s'y référer

C'est PHPTree.

adresse git : https://git.oschina.net/jiusem/PHPTree.git

ou téléchargez depuis Script Home http://www.jb51.net/codes/606002 html. "identifiant ": 1,

"name": "book",

"parent_id": 0,

"expanded": false, //Ne pas développer les nœuds enfants

" children": [

<?php 
require(&#39;PHPTree.class.php&#39;);

//原始数据, 从数据库读出
$data = array(
	array(
		&#39;id&#39;=>1,
		&#39;name&#39;=>&#39;book&#39;,
		&#39;parent_id&#39;=>0
	),
	array(
		&#39;id&#39;=>2,
		&#39;name&#39;=>&#39;music&#39;,
		&#39;parent_id&#39;=>0
	),
	array(
		&#39;id&#39;=>3,
		&#39;name&#39;=>&#39;book1&#39;,
		&#39;parent_id&#39;=>1
	),
	array(
		&#39;id&#39;=>4,
		&#39;name&#39;=>&#39;book2&#39;,
		&#39;parent_id&#39;=>3
	)
);

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

?>
"élargi": False,

"Enfants": [

"Parent_id": 3,

"Leaf": true

}
]

musique ",
"parent_id": 0,
«leaf»: true
«leaf» }
]



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 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, à laquelle vous pouvez vous référer.

Concernant la conception de la base de données, il vous suffit de vous assurer que les champs id et parent_id sont inclus. D'autres champs peuvent être ajoutés par vous-même sans affecter la génération de données. parent_id est l'ID parent. S'il s'agit d'une classification de premier niveau, définissez-le sur 0. Bien entendu, les champs sont également configurables. Veuillez continuer à lire, je vais vous présenter quelques méthodes d'utilisation avancées.

Développez les nœuds enfants :

PHPTree::makeTree( $data, array(
 &#39;expanded&#39; => true
));

输出的数据为:

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

自定义主键和父键:

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

输出的数据为:

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

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

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

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

默认,这些字段的配置都是以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