gnugat / traversal
此包已被废弃,不再维护。未建议替代包。
用于哈希表(关联数组)遍历的服务(igorw/get-in 的分支)。
v2.0.0
2014-12-07 14:32 UTC
Requires
- php: >=5.3
Requires (Dev)
- phpunit/phpunit: >=3.7,<5.0
This package is auto-updated.
Last update: 2022-02-01 12:41:36 UTC
README
哈希表(关联数组)遍历的服务。
当处理嵌套的关联结构时,遍历它们可能相当痛苦。主要是因为需要进行大量的 isset
检查。
例如,要访问嵌套键 ['foo']['bar']['baz']
,你必须这样做
$baz = (isset($data['foo']['bar']['baz'])) ? $data['foo']['bar']['baz'] : null;
已经足够了!Traversal
提供了一种更好的方法
$baz = Gnugat\Traversal\get_in($data, array('foo', 'bar', 'baz'));
安装
使用 Composer 在您的项目中安装 Traversal
composer require gnugat/traversal:~2.0
使用
通过引入 Composer 的自动加载器使函数可用
<?php require __DIR__.'/vendor/autoload.php';
进入
使用键列表从嵌套结构中检索值
$users = array( array('name' => 'Igor Wiedler'), array('name' => 'Jane Doe'), array('name' => 'Acme Inc'), ); $name = Gnugat\Traversal\get_in($users, array(1, 'name')); //= 'Jane Doe'
不存在的键返回 null
$data = array('foo' => 'bar']; $baz = Gnugat\Traversal\get_in($data, array('baz')); //= null
你可以提供一个默认值,该值将用于替代 null
$data = array('foo' => 'bar'); $baz = Gnugat\Traversal\get_in($data, array('baz'), 'qux'); //= 'qux'
更新在
将函数应用于嵌套结构中的特定位置的值
$data = array('foo' => array('answer' => 42)); $inc = function ($x) { return $x + 1; }; $new = Gnugat\Traversal\update_in($data, array('foo', 'answer'), $inc); //= array('foo' => array('answer' => 43))
你可以为函数提供可变数量的额外参数
$data = array('foo' => 'bar'); $concat = function (/* $args... */) { return implode('', func_get_args()); }; $new = Gnugat\Traversal\update_in($data, array('foo'), $concat, ' is the ', 'best'); //= array('foo' => 'bar is the best')
关联在
在特定位置设置一个值
$data = array('foo' => 'bar'); $new = Gnugat\Traversal\assoc_in($data, array('foo'), 'baz'); //= array('foo' => 'baz')
如果该值尚不存在,它也会设置该值
$data = []; $new = Gnugat\Traversal\assoc_in($data, array('foo', 'bar'), 'baz'); //= array('foo' => array('bar' => 'baz'))
灵感
命名和实现灵感来自 clojure 的 get-in
、update-in
和 assoc-in
函数。