igorw / get-in
用于遍历哈希表(关联数组)的函数。
v1.0.3
2014-12-15 23:03 UTC
Requires
- php: >=5.4
This package is not auto-updated.
Last update: 2024-09-10 01:22:51 UTC
README
用于遍历哈希表(关联数组)的函数。
当处理嵌套的关联结构时,遍历它们可能会变得非常痛苦。主要是因为需要进行大量的 isset
检查。
例如,要访问嵌套键 ['foo']['bar']['baz']
,你必须这样做
$baz = (isset($data['foo']['bar']['baz'])) ? $data['foo']['bar']['baz'] : null;
已经足够了! get-in
提供了一种更好的方法
$baz = igorw\get_in($data, ['foo', 'bar', 'baz']);
安装
通过 composer
$ composer require igorw/get-in:~1.0
使用方法
get_in
使用键列表从嵌套结构中检索值
$users = [ ['name' => 'Igor Wiedler'], ['name' => 'Jane Doe'], ['name' => 'Acme Inc'], ]; $name = igorw\get_in($users, [1, 'name']); //= 'Jane Doe'
不存在的键返回 null
$data = ['foo' => 'bar']; $baz = igorw\get_in($data, ['baz']); //= null
你可以提供一个默认值,该值将用于代替 null
$data = ['foo' => 'bar']; $baz = igorw\get_in($data, ['baz'], 'qux'); //= 'qux'
update_in
将函数应用于嵌套结构中特定位置的值
$data = ['foo' => ['answer' => 42]]; $inc = function ($x) { return $x + 1; }; $new = igorw\update_in($data, ['foo', 'answer'], $inc); //= ['foo' => ['answer' => 43]]
你可以为函数提供可变数量的额外参数
$data = ['foo' => 'bar']; $concat = function (/* $args... */) { return implode('', func_get_args()); }; $new = igorw\update_in($data, ['foo'], $concat, ' is the ', 'best'); //= ['foo' => 'bar is the best']
assoc_in
在特定位置设置值
$data = ['foo' => 'bar']; $new = igorw\assoc_in($data, ['foo'], 'baz'); //= ['foo' => 'baz']
如果该值尚不存在,它也将设置该值
$data = []; $new = igorw\assoc_in($data, ['foo', 'bar'], 'baz'); //= ['foo' => ['bar' => 'baz']]
灵感
命名和实现灵感来源于 clojure 的 get-in
、update-in
和 assoc-in
函数。