phiil / xtraverse
PHP 扩展,使数组遍历和插入变得非常简单。
1.1
2022-03-25 09:30 UTC
Requires
- php: ^7.4|^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-25 14:52:45 UTC
README
此扩展使得在 PHP 中遍历嵌套数组/对象变得非常简单。
安装
通过 Composer
composer require phiil/xtraverse
文件下载
要使用此包的所有功能,只需下载 src/
目录。
入门
遍历路径
路径是用来指定您想在嵌套对象内部遍历到的位置。假设您想获取 'blocks' 数组中 ID 为 1 的 Block 的标题。
我们的嵌套对象
$data = [ 'blocks' => [ [ 'id' => 1, 'title' => 'First block', ], ], ];
现在我们指定我们想要的元素
$path = 'blocks[1].title';
每一步都用点 ('.') 分隔 - 如果您想查询 ID,只需将其附加到路径上,并用闭合括号表示。
现在开始遍历
use Phiil\XTraverse\Traverser; $traverser = new Traverser(); $title = $traverser->traverseData($path, $data, traverseArrayLimit: false); // we want a non-array value - pass "false" as the last argument or the service will throw an exception echo $title;
上述代码将输出以下内容:First block
更新嵌套值
更新值也可以使用路径
use Phiil\XTraverse\Traverser; // We want to update the title of the block we previously traversed to $updatePath = 'blocks[1].title'; $traverser = new Traverser(); $data = $traverser->update($data, $path, 'New title')->data;
注意:更新方法返回一个包含 path
、data
和 insert
属性的对象。通常,直接从对象中获取数据属性是最好的选择。
使用 IDs
遍历服务可以自动递增 IDs - 意味着如果您插入一个嵌套对象,如
use Phiil\XTraverse\Traverser; $object = [ 'id' => null, 'title' => 'Second block', ]; $traverser = new Traverser(); $data = $traverser->update($object, 'blocks.$', $object)->data;
现在 $data
内部的对象将具有 ID 2(First Block: ID 1)。
注意:如果要将块添加到非关联数组(只有数字键),可以使用 path.$
语法。
运行测试
要运行测试,请执行以下命令
composer install --dev
./vendor/bin/phpunit tests/
有问题?
只需在 Github 上发布它们,或者通过电子邮件联系我:philipp@riddle.com。欢迎贡献!