theodorejb / array-utils
用于处理数组的实用函数
v2.1.0
2023-09-13 23:36 UTC
Requires
- php: >=8.1
Requires (Dev)
- phpunit/phpunit: ^10.3
- psalm/plugin-phpunit: ^0.18.4
- vimeo/psalm: ^5.15
This package is auto-updated.
Last update: 2024-08-28 07:08:39 UTC
README
ArrayUtils 是一组有用的 PHP 数组函数。
通过 Composer 安装
composer require theodorejb/array-utils
方法
containsAll
如果所有针都在草堆中,则返回 true。
use theodorejb\ArrayUtils\ArrayUtils; $haystack = [1, 2, 3, 5, 8, 13]; $needles = [2, 13, 5]; ArrayUtils::containsAll($needles, $haystack); // true ArrayUtils::containsAll($haystack, $needles); // false
containsSame
如果两个数组包含相同的值(不考虑顺序),则返回 true。
use theodorejb\ArrayUtils\ArrayUtils; $set1 = [1, 3, 5, 7]; $set2 = [3, 7, 5, 1]; ArrayUtils::containsSame($set1, $set2); // true
groupRows
当一个或多个键的值发生变化时,将数组迭代器分割成组。迭代器必须按用于分组结果的数组键进行排序。
use theodorejb\ArrayUtils\ArrayUtils; $peoplePets = [ ['lName' => 'Jordan', 'fName' => 'Jack', 'pet' => 'Scruffy'], ['lName' => 'Jordan', 'fName' => 'Jack', 'pet' => 'Spot'], ['lName' => 'Jordan', 'fName' => 'Jill', 'pet' => 'Paws'], ['lName' => 'Greene', 'fName' => 'Amy', 'pet' => 'Blackie'], ['lName' => 'Greene', 'fName' => 'Amy', 'pet' => 'Whiskers'], ['lName' => 'Greene', 'fName' => 'Amy', 'pet' => 'Paws'], ['lName' => 'Smith', 'fName' => 'Amy', 'pet' => 'Tiger'], ]; $grouped = []; foreach (ArrayUtils::groupRows($peoplePets, 'fName') as $group) { $grouped[] = $group; } $expected = [ [$peoplePets[0], $peoplePets[1]], [$peoplePets[2]], [$peoplePets[3], $peoplePets[4], $peoplePets[5], $peoplePets[6]], ]; var_dump($grouped === $expected); // bool(true) ////// Additional arguments can be passed to `groupRows` to group by more than one column: $grouped = []; foreach (ArrayUtils::groupRows($peoplePets, 'lName', 'fName') as $group) { $grouped[] = $group; } $expected = [ [$peoplePets[0], $peoplePets[1]], [$peoplePets[2]], [$peoplePets[3], $peoplePets[4], $peoplePets[5]], [$peoplePets[6]], ]; var_dump($grouped === $expected); // bool(true)
requireStrKey
如果它是字符串,则返回指定的数组键值。否则抛出异常。
use theodorejb\ArrayUtils\ArrayUtils; $data = ['k' => 'val', 'i' => 1]; ArrayUtils::requireStrKey($data, 'k'); // val ArrayUtils::requireStrKey($data, 'x'); // throws OutOfBoundsException ArrayUtils::requireStrKey($data, 'i'); // throws UnexpectedValueException
getOptionalStrKey
如果它是字符串,则返回指定的数组键值,或如果数组键不存在则返回 null。如果键存在但值不是字符串,则抛出异常。
use theodorejb\ArrayUtils\ArrayUtils; $data = ['k' => 'val', 'i' => 1]; ArrayUtils::getOptionalStrKey($data, 'k'); // val ArrayUtils::getOptionalStrKey($data, 'x'); // null ArrayUtils::getOptionalStrKey($data, 'i'); // throws UnexpectedValueException
requireNumericKey
如果它是整数或浮点数,则返回指定数组键值作为浮点数。否则抛出异常。
use theodorejb\ArrayUtils\ArrayUtils; $data = ['i' => 1, 'f' => 0.5, 'k' => 'val']; ArrayUtils::requireNumericKey($data, 'i'); // 1.0 ArrayUtils::requireNumericKey($data, 'f'); // 0.5 ArrayUtils::requireNumericKey($data, 'x'); // throws OutOfBoundsException ArrayUtils::requireNumericKey($data, 'k'); // throws UnexpectedValueException
getOptionalNumericKey
如果它是整数或浮点数,则返回指定数组键值作为浮点数,或如果数组键不存在则返回 null。如果键存在但值不是整数或浮点数,则抛出异常。
use theodorejb\ArrayUtils\ArrayUtils; $data = ['i' => 2, 'f' => 0.5, 'k' => 'val']; ArrayUtils::getOptionalNumericKey($data, 'i'); // 2.0 ArrayUtils::getOptionalNumericKey($data, 'f'); // 0.5 ArrayUtils::getOptionalNumericKey($data, 'x'); // null ArrayUtils::getOptionalNumericKey($data, 'k'); // throws UnexpectedValueException
requireIntKey
如果它是整数,则返回指定数组键值。否则抛出异常。
use theodorejb\ArrayUtils\ArrayUtils; $data = ['k' => 'val', 'i' => 1]; ArrayUtils::requireIntKey($data, 'i'); // 1 ArrayUtils::requireIntKey($data, 'x'); // throws OutOfBoundsException ArrayUtils::requireIntKey($data, 'k'); // throws UnexpectedValueException
getOptionalIntKey
如果它是整数,则返回指定数组键值,或如果数组键不存在则返回 null。如果键存在但值不是整数,则抛出异常。
use theodorejb\ArrayUtils\ArrayUtils; $data = ['k' => 'val', 'i' => 2]; ArrayUtils::getOptionalIntKey($data, 'i'); // 2 ArrayUtils::getOptionalIntKey($data, 'x'); // null ArrayUtils::getOptionalIntKey($data, 'k'); // throws UnexpectedValueException
requireBoolKey
如果它是布尔值,则返回指定数组键值。否则抛出异常。
use theodorejb\ArrayUtils\ArrayUtils; $data = ['k' => 'val', 'b' => true]; ArrayUtils::requireBoolKey($data, 'b'); // true ArrayUtils::requireBoolKey($data, 'x'); // throws OutOfBoundsException ArrayUtils::requireBoolKey($data, 'k'); // throws UnexpectedValueException
getOptionalBoolKey
如果它是布尔值,则返回指定数组键值,或如果数组键不存在则返回 null。如果键存在但值不是布尔值,则抛出异常。
use theodorejb\ArrayUtils\ArrayUtils; $data = ['k' => 'val', 'b' => false]; ArrayUtils::getOptionalBoolKey($data, 'b'); // false ArrayUtils::getOptionalBoolKey($data, 'x'); // null ArrayUtils::getOptionalBoolKey($data, 'k'); // throws UnexpectedValueException
作者
Theodore Brown
https://theodorejb.me
许可证
MIT