The array library is just a simple collection of missing php array functions.
Install with composer at krak/array
<?php
use Krak\Arr;
$data = [
'a' => [
'b' => 1,
],
];
$res = Arr\get($data, 'a.b');
assert($res == 1);
Arr\set($data, 'c.d', 2);
assert($data['c']['d'] == 2);
// or use the global aliases
array_get($data, 'a.b');
There also is a Bag
class which provides an object oriented API for the arrays.
<?php
use Krak\Arr;
$bag = new Arr\Bag();
$bag->set('a.b', 1);
var_dump($bag->raw());
/*
array(1) {
["a"]=>
array(1) {
["b"]=>
int(1)
}
}
*/
The following are defined in the namespace Krak\Arr
:
array expand(iterable $iterable, string $separator = '.')
array index_by(iterable $iterable, string $key)
array udiff_stable(iterable $a, iterable $b, callable $cmp)
mixed get(array $data, string $key, mixed $else = null)
mixed getIn(array $data, array $key, mixed $else = null);
bool has(array $data, string $key, string $sep = '.')
bool hasIn(array $data, array $key)
void set(array &$data, string $key, mixed $value, string $sep = '.')
void del(array &$data, string $key, string $sep = '.')
You can also use the globally defined aliases
array_expand
array_index_by
array_udiff_stable
array_get
array_has
array_set
array_del
Or the Krak\Arr\Bag
class:
<?php
namespace Krak\Arr;
class Bag implements ArrayAccess {
public function __construct(array $data = [])
public function get($key, $else = null, $sep = '.')
public function getIn(array $key, $else = null)
public function set($key, $value, $sep = '.')
public function has($key, $sep = '.')
public function hasIn(array $key)
public function del($key, $sep = '.')
public function raw()
}
Run tests with phpunit