Heim  >  Artikel  >  Backend-Entwicklung  >  PHPTree – PHP generiert schnell unbegrenzte Klassifizierungen_php-Fähigkeiten

PHPTree – PHP generiert schnell unbegrenzte Klassifizierungen_php-Fähigkeiten

不言
不言Original
2018-04-04 10:20:324448Durchsuche

Baumdaten werden häufig in der Entwicklung verwendet, beispielsweise eine unendliche mehrstufige Klassifizierung, die eine typische Baumstruktur darstellt. Der Algorithmus hier verwendet rekursives Denken. Um den Entwicklungsprozess zu vereinfachen, habe ich ein Tool zur Verbesserung der Entwicklungseffizienz geschrieben.

Es ist PHPTree.

Git-Adresse: https://git.oschina.net/jiusem/PHPTree.git

oder von Script Home http://www.jb51.net/codes/606002 herunterladen

Das einfachste Beispiel:

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

?>

Ausgabe:

[
                                     > „id ": 1,
"name": "book",
"parent_id": 0,
"expanded": false, //Untergeordnete Knoten nicht erweitern
"children": [

"erweitert": Falsch,
"Kinder": [
"Eltern_ID": 3,
"Blatt": True
}
]
Musik ",
„parent_id“: 0,
„leaf“: true
„leaf“ }
]



Die generierten Daten sind eine Baumstruktur, die sein kann Wird in Verbindung mit Front-End-Frameworks wie ExtJS verwendet. Git enthält eine Demo von ExtJS, auf die Sie verweisen können.

Demonstration:



Wenn Sie kein Front-End-Framework verwenden und nur die HTML-Ausgabe verwenden müssen, können Sie die folgende Methode verwenden:


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

Erhalten Sie ein eindimensionales Array und verwenden Sie das Ebenenfeld, um die Klassifizierungsebene zu identifizieren:

Ausgabe als Select-Tag:

Demo:

array(
 array(
  &#39;id&#39;=>1,
  &#39;name&#39;=>&#39;用户管理&#39;,
  &#39;parent_id&#39;=>0,
  &#39;level&#39;=>0 //一级分类
 ),
 array(
  &#39;id&#39;=>1,
  &#39;name&#39;=>&#39;用户列表&#39;,
  &#39;parent_id&#39;=>1,
  &#39;level&#39;=>1 //二级分类
 )
 ....
);

Git enthält eine Demo, die HTML ausgibt, auf die Sie verweisen können.

Bezüglich des Designs der Datenbank müssen Sie nur sicherstellen, dass die Felder id und parent_id enthalten sind. Andere Felder können von Ihnen selbst hinzugefügt werden, ohne die Datengenerierung zu beeinträchtigen. parent_id ist die übergeordnete ID. Wenn es sich um eine Klassifizierung der ersten Ebene handelt, setzen Sie sie auf 0. Natürlich sind auch Felder konfigurierbar. Bitte lesen Sie weiter, ich werde einige fortgeschrittene Nutzungsmethoden vorstellen.

Untergeordnete Knoten erweitern:
echo &#39;<h1>PHPTree树形结构</h1>&#39;;
echo &#39;<select style="width:300px;">&#39;;
foreach($r as $item){
	echo &#39;<option>&#39;;
	//根据所在的层次缩进
	echo str_repeat(&#39;......&#39;,$item[&#39;level&#39;]);
	echo $item[&#39;name&#39;];
	echo &#39;</option>&#39;;
}
echo &#39;</select>&#39;;

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无限级分类实现方法分析

Das obige ist der detaillierte Inhalt vonPHPTree – PHP generiert schnell unbegrenzte Klassifizierungen_php-Fähigkeiten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn