igorw/get-in

用于遍历哈希表(关联数组)的函数。

v1.0.3 2014-12-15 23:03 UTC

This package is not auto-updated.

Last update: 2024-09-10 01:22:51 UTC


README

Build Status

用于遍历哈希表(关联数组)的函数。

当处理嵌套的关联结构时,遍历它们可能会变得非常痛苦。主要是因为需要进行大量的 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']]

灵感

命名和实现灵感来源于 clojureget-inupdate-inassoc-in 函数。