marc / flattree
邻接表树构建器
dev-master
2017-02-23 18:27 UTC
Requires
- php: 7.*
Requires (Dev)
- phpunit/phpunit: ~5.2
This package is auto-updated.
Last update: 2024-09-18 06:15:29 UTC
README
设置
composer require marc/flattree:dev-master
使用
递归邻接表
假设你有一个以下邻接表作为表示某些递归树的递归树数据
基于给定的数据集构建一个树,其中 parent_id=employee_id
use marc\flatrree\{unfold, debug}; $tree = unfold($associative_data, 'parent_id=employee_id'); echo debug($tree, "{job_title}: {first_name}");
调试输出
├─ <null>: <null>
│ ├─ Managing Director: Bill
│ │ ├─ Customer Services: Angela
│ │ │ └─ Assistant 1: Henry
│ │ │ └─ Assistant 2: Nicola
│ │ ├─ Development Manager: Ben
│ │ │ ├─ Snr Developer: Kerry
│ │ │ │ └─ Jrn Developer: Tim
│ │ │ └─ Assistant: James
非递归邻接表
按 class
和 animal
分组构建树
use marc\flattree\{unfold, debug}; $tree = unfold($data, ['class', 'animal']); echo debug($tree, ['{:level}', '{:level}', '{breed}']);
调试输出
├─ mammal
│ ├─ dog
│ │ └─ Dalmatian
│ │ └─ Bulldog
│ │ └─ Lhasa Apso
│ ├─ cat
│ │ └─ Persian
再增加一个分组级别,现在按 class
、animal
和 size
分组
use marc\flattree\{unfold, debug}; $tree = unfold($associative_data, ['class', 'animal', 'size']); echo debug($tree, ['{:level}', '{:level}', '{:level}', '{breed}']);
调试输出
├─ mammal
│ ├─ dog
│ │ ├─ big
│ │ │ └─ Dalmatian
│ │ ├─ small
│ │ │ └─ Bulldog
│ │ │ └─ Lhasa Apso
│ ├─ cat
│ │ ├─ small
│ │ │ └─ Persian
最终备注
请注意,marc\flattree\debug
函数仅用于调试目的 仅,你不应依赖于其输出。
参考 http://www.ibase.ru/files/articles/programming/dbmstrees/sqltrees.html
版权
版权所有 (c) 2016-* Márcio Almada。在 MIT 风格许可的条款下分发。有关详细信息,请参阅 LICENSE。