PHP array_any 函数
最后修改于 2025 年 3 月 13 日
PHP array_any 函数检查数组中的任何元素是否通过回调函数实现的测试。它对于部分验证很有用。
基本定义
array_any 函数测试是否有任何元素满足某个条件。如果至少有一个元素通过测试,它将返回 true。
语法:array_any(array $array, callable $callback): bool。回调函数应为通过的元素返回 true。空数组返回 false。
基本 array_any 示例
这显示了简单的验证,检查数组中的任何元素是否为正数。
basic_array_any.php
<?php
declare(strict_types=1);
function array_any(array $array, callable $callback): bool {
foreach ($array as $element) {
if ($callback($element)) {
return true;
}
}
return false;
}
$numbers = [-2, -1, 0, 1];
$hasPositive = array_any($numbers, fn($n): bool => $n > 0);
echo $hasPositive ? 'Has positive' : 'No positives';
这检查任何数字是否为正数。回调函数测试每个元素,并且 array_any 返回 true,因为 1 通过了测试。
检查特定值
验证数组中的任何字符串是否与特定值匹配。
specific_values.php
<?php declare(strict_types=1); $colors = ["red", "green", "blue"]; $hasBlue = array_any($colors, fn($color): bool => $color === "blue"); echo $hasBlue ? 'Has blue' : 'No blue';
这检查数组中是否存在“blue”。回调函数比较每个元素,在找到匹配值时返回 true。
对象属性检查
检查数组中的任何对象是否具有满足特定标准的属性。
object_property_check.php
<?php
declare(strict_types=1);
class User {
public function __construct(
public string $name,
public bool $isAdmin
) {}
}
$users = [
new User("Alice", false),
new User("Bob", false),
new User("Charlie", true)
];
$hasAdmin = array_any($users, fn(User $u): bool => $u->isAdmin);
echo $hasAdmin ? 'Has admin' : 'No admins';
这验证任何用户是否为管理员。回调函数检查每个对象的 isAdmin 属性,在找到管理员用户时返回 true。
空数组行为
array_any 对空数组返回 false,这是合乎逻辑的。
empty_array.php
<?php declare(strict_types=1); $emptyArray = []; $result = array_any($emptyArray, fn($x): bool => $x > 10); echo $result ? 'Some pass' : 'None pass';
由于没有要检查的元素,array_any 返回 false。这遵循了数学逻辑,即对空集的存在的量词为 false。
提前终止
array_any 为了效率,在第一次成功后停止检查。
early_termination.php
<?php
declare(strict_types=1);
$numbers = [1, 3, 5, 8, 9];
$hasEven = array_any($numbers, function($n): bool {
echo "Checking $n\n";
return $n % 2 === 0;
});
echo $hasEven ? 'Has even' : 'No evens';
该函数在第一个偶数 (8) 处停止。您只会看到 1、3、5 和 8 的输出,这证明了短路行为。
最佳实践
- 清晰的回调:为回调逻辑使用描述性名称。
- 类型安全:添加类型提示以实现健壮的验证。
- 性能:在大型数组中将可能匹配项提前放置。
- 可读性:考虑使用辅助函数进行复杂检查。
来源
PHP Array Filter 文档(相关功能)
本教程涵盖了 PHP array_any 模式,并通过实际示例展示了其在数组验证场景中的用法。
作者
列出 所有 PHP 数组函数。