opxcore / array
OpxCore数组工具。
1.2.0
2020-12-23 20:48 UTC
Requires
- php: ^7.4
Requires (Dev)
- phpunit/phpunit: ^9.5.0
README
安装
composer require opxcore/array
使用
可用方法
对于点表示法
OpxCore\Arr\Arr::dot($array)
OpxCore\Arr\Arr::get($array, $key, $default)
OpxCore\Arr\Arr::set($array, $key, $value)
OpxCore\Arr\Arr::has($array, $keys)
OpxCore\Arr\Arr::forget($array, $keys)
OpxCore\Arr\Arr::pull($array, $key, $default)
OpxCore\Arr\Arr::push($array, $key, $value)
仅限常规数组
OpxCore\Arr\Arr::only($array, $keys)
OpxCore\Arr\Arr::first($array, $callback, $default)
OpxCore\Arr\Arr::last($array, $callback, $default)
所有 $default
值都是可选的,可以是返回值的 callable
。默认情况下,始终为 null
。
性能提示:所有点表示法操作方法都针对点表示法键优化了性能。如果非常关注性能,最好在非点表示法数组上使用常规数组操作。
创建点表示法数组
$dotNotated = Arr::dot($array);
将任何扁平或多维数组转换为点表示法数组。
$array = ['level1' => ['level2' => 'value']]; $result = Arr::dot($array); // $result === ['level1.level2' => 'value']
使用点表示法获取值
OpxCore\Arr\Arr::get($array, $key, $default = null)
使用点表示法从数组中获取值。如果给定的键不在数组中,此函数将返回默认值。
use OpxCore\Arr\Arr; $array = ['level1' => ['level2' => 'value']]; $result = Arr::get($array, 'level1.level2'); // $result === 'value' $result = Arr::get($array, 'level1.level3'); // $result === null $result = Arr::get($array, 'level1.level3', false); // $result === false $result = Arr::get($array, 'level1.level3', function(){return -1;}); // $result === -1
使用点表示法设置值
OpxCore\Arr\Arr::set($array, $key, $value): array
使用点表示法将值设置到给定键的数组中。函数直接修改给定的数组,但也返回修改后的数组以方便使用。
use OpxCore\Arr\Arr; $array = ['level1' => ['level2' => 'value']]; $result = Arr::set($array, 'level1.level2_1', 'another value'); // $result === ['level1' => ['level2' => 'value', 'level2_1' => 'another value']] // $array === $result
确定键(或键)在数组中的存在性
OpxCore\Arr\Arr::has($array, $keys)
确定给定的键(或多个键)是否存在于数组中。
use OpxCore\Arr\Arr; $array = ['level1' => ['level2' => 'value', 'level2_1' => 'another value']]; $result = Arr::has($array, 'level1.level2'); // $result === true $result = Arr::has($array, ['level1.level2', 'level1.level2_2']); // $result === false
删除与给定键关联的值
OpxCore\Arr\Arr::forget($array, $keys)
从数组中删除给定的键(或作为数组提供的多个键)从数组中。如果任何键不存在于数组中,则不执行任何操作。函数直接修改给定的数组,但也返回修改后的数组以方便使用。
use OpxCore\Arr\Arr; $array = ['level1' => ['level2' => 'value', 'level2_1' => 'another value']]; $result = Arr::forget($array, 'level1.level2'); // $result === ['level1' => ['level2_1' => 'another value']] // $array === $result
从数组中拉取值
OpxCore\Arr\Arr::pull($array, $key, $default)
实际上,这是 Arr::get()
和 Arr::forget()
方法的组合。此方法获取值然后从数组中删除它。如果键不存在于数组中,将返回默认值。
use OpxCore\Arr\Arr; $array = ['level1' => ['level2' => 'value', 'level2_1' => 'another value']]; $result = Arr::pull($array, 'level1.level2'); // $result === 'value' // $array === ['level1' => ['level2_1' => 'another value']]
将值推入数组
OpxCore\Arr\Arr::push($array, $key, $value)
将值推入数组的给定键中。如果给定的键不存在,它将被创建,并将值设置为未关联数组的项。如果键已存在,与该键关联的值将被转换为数组,并将值添加到其中。函数直接修改给定的数组,但也返回修改后的数组以方便使用。
use OpxCore\Arr\Arr; $array = ['level1' => ['level2' => 'value']]; $result = Arr::push($array, 'level1.level2', 'another value'); // $result === ['level1' => ['level2' => ['value', 'another value']]] // $array === $result