mufuphlex / array-util
数组工具 - 智能且快速数组助手
1.0.0
2023-03-25 14:12 UTC
Requires
- php: >=8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.15
- phpunit/phpunit: >=9
This package is not auto-updated.
Last update: 2024-09-22 00:51:10 UTC
README
数组工具 - 智能且快速数组助手。
这些助手,以及其他功能,提供了内置PHP数组函数的显著改进版本(大约快10-30倍),如 unique()
或 intersect()
。
unique()
函数
这是标准 array_unique()
PHP 函数的改进版本(快30倍!)。
$arr = [1,2,3,1,2,3]; $unique = \Mufuphlex\Util\ArrayUtil::unique($arr); // [1,2,3]
intersect()
函数
这是标准 array_intersect()
PHP 函数的改进版本(快10倍!)。
$a = [1,2,3]; $b = [2,3,4]; $c = [3,4,5]; $result = \Mufuphlex\Util\ArrayUtil::intersect($a, $b, $c); // [3]
cutBy*()
函数
如果您需要根据元素的键从数组中移除特定元素,cutByWhitelist(array $array, array $map)
和 cutByBlacklist(array $array, array $map)
可以非常有用。 cutByWhitelist()
只保留在 $map
中列出的 $array
中的元素,而 cutByBlacklist()
则相反 - 从 $array
中移除在 $map
中列出的元素。此外,这些函数不仅可以移除,还可以通过回调函数修改 $array
的成员 - 类似于标准 PHP 函数 array_walk()
的扩展版本。
如何使用它?
让我们考虑以下示例数组
$array = [ 'result' => [ 'one' => [ 'param 1' => 1, 'param 2' => 2, 'param 3' => 3, ], 'another' => [ 'param 1' => 4, 'param 2' => 5, 'param 3' => 6, ], 'another one' => [ 'param 1' => 7, 'param 2' => 8, 'param 3' => 9, ] ], 'errors' => [ 'form' => [ 'field 1' => [ 0 => 'error 1', 1 => 'error 2' ], 'field 2' => [ 0 => 'error 3', 1 => 'error 4 ' ] ], 'logic' => [ 0 => 'logic error 1', 1 => 'logic error 2' ] ], 0 => [ 0 => 'item 1', 1 => 'item 2' ], 1 => [ 0 => 'item 3', 1 => 'item 4' ], '123 - numeric containing' => [ 0 => 'item 5', 1 => 'item 6' ], 'not numeric containing' => [ 0 => 'item 5', 1 => 'item 6' ], ];
- 保留/移除 `array.result*` 中键只包含 `one` 或只包含 `another` 的元素
$map = [ 'result' => [ '/^(?:one|another)$/' => true ] ];
- 只保留/移除 `array.errors.logic` 中的元素
$map = [ 'errors' => [ 'logic' => true ] ];
- 只保留/移除 `array.errors.form.field *.*` 中键为 `0` 的元素
$map = [ 'errors' => [ 'form' => [ 'field \d+' => [ 0 => true ] ] ] ];
- 保留/移除 `array.result.*` 中键为 `param 3` 的元素,并可以通过添加 5 来修改这些元素的价值
$map = [ 'result' => [ '/.+/' => [ 'param 3' => function($arg){ return $arg+=5; } ] ] ];