rgilyov/array-tree-walker
Composer 安装命令:
composer require rgilyov/array-tree-walker
包简介
Very easy way to parse arrays with tree structure
关键字:
README 文档
README
Installation
composer require rgilyov/array-tree-walker dev-master
Description
Lets make an example of array with tree structure:
$tree = [ 'name' => 'child', 'parents' => [ 'mother' => [ 'name' => 'mother', 'parents' => [ 'mother' => [ 'name' => 'first grand mother' ], 'father' => [ 'name' => 'first grand father' ] ] ], 'father' => [ 'name' => 'father', 'parents' => [ 'mother' => [ 'name' => 'second grand mother' ], 'father' => [ 'name' => 'second grand father', 'parents' => [ 'mother' => [ 'name' => 'second grand grand mother' ] ] ] ] ] ] ]; $walker = new \RGilyov\ArrayTreeWalker($tree);
To walk through tree structure use ->, to get value use ->get('name');
echo $walker->parents->mother->parents->father->get('name'); // result: `first grand father`
You can also get value like so
echo $walker->parents->mother->parents->father['name']; // result: `first grand father` echo $walker->parents->mother->parents->father->name['name']; // result: `first grand father` echo $walker->parents->mother->parents->father->name->father['name']; // result: null
You may also specify node name, just pass it as the second the class's constructor parameter
$walkerWithNodeName = new \RGilyov\ArrayTreeWalker($tree, 'parents'); echo $walkerWithNodeName->father->father->get('name'); // result: `second grand father` echo $walkerWithNodeName->father->father->mother['name']; // result: 'second grand grand mother' echo $walkerWithNodeName->father->father->mother->mother['name']; // result: null
You also can walk down the tree and walk up the tree and modify each node during walking:
$walker = new \RGilyov\ArrayTreeWalker($tree, 'parents'); /* * If an array will be returned the values for given keys will be rewritten and if keys didn't exist in the node they will be attached */ $walker->walkDown(function ($node, $level, $nodeNumber, $parentNodeNumber) { return [ 'level' => $level, 'node_number' => $nodeNumber, 'parent_node_number' => $parentNodeNumber ]; }); $walker->walkUp(function ($node, $nodeChildren, $parameters, $level, $nodeNumber) { return [ 'super_name' => $node['name'] . ' ' . implode(array_map(function ($child) { return $child['name']; }, $nodeChildren), ' ') ]; });
List of available methods:
$walker->toArray(); $walker->count(); $walker->offsetExists('key'); $walker->offsetUnset('key'); $walker->offsetGet('key'); $walker->offsetSet('key', 'value');
rgilyov/array-tree-walker 适用场景与选型建议
rgilyov/array-tree-walker 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5.64k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2017 年 01 月 07 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「tree」 「parse」 「nested array」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 rgilyov/array-tree-walker 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 rgilyov/array-tree-walker 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 rgilyov/array-tree-walker 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
yii2 xml request parser
Parse promotion arrays from the Wayne State University API
jsTree widget for yii2
Doctrine2 behavior traits - slowhop fork
Parse use statements for a reflection object
Baum is an implementation of the Nested Set pattern for Eloquent models.
统计信息
- 总下载量: 5.64k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 22
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-01-07