PHP 8.6.0 Alpha 2 available for testing

array_any

(PHP 8 >= 8.4.0)

array_any检查数组中是否至少有一个元素满足回调函数的条件

说明

function array_any(array $array, callable $callback): bool

如果指定的 callback 对任意一个元素返回 true,则 array_any() 函数返回 true;否则该函数返回 false

参数

array
需要被遍历的 array
callback

用于检查每个元素的回调函数,该函数必须

function callback(mixed $value, mixed $key): bool
如果该函数返回 true,则 array_any() 会立即返回 true,并且不会再为后续元素调用该回调函数。

返回值

如果数组中至少存在一个元素能让 callback 返回 true,则该函数返回 true;否则返回 false

示例

示例 #1 array_any() 示例

<?php
$array = [
    'a' => 'dog',
    'b' => 'cat',
    'c' => 'cow',
    'd' => 'duck',
    'e' => 'goose',
    'f' => 'elephant'
];

// Check, if any animal name is longer than 5 letters.
var_dump(array_any($array, function (string $value) {
    return strlen($value) > 5;
}));

// Check, if any animal name is shorter than 3 letters.
var_dump(array_any($array, function (string $value) {
    return strlen($value) < 3;
}));

// Check, if any array key is not a string.
var_dump(array_any($array, function (string $value, $key) {
   return !is_string($key);
}));
?>

以上示例会输出:

bool(true)
bool(false)
bool(false)

参见

  • array_all() - 检查数组所有元素是否都满足回调函数的条件
  • array_filter() - 使用回调函数过滤数组的元素
  • array_find() - 返回满足回调函数条件的第一个元素
  • array_find_key() - 返回满足回调函数条件的第一个元素的键
添加备注

用户贡献的备注 1 note

up
0
miken32 at example dot com
10 months ago
This can be a replacement for array_filter() where an existence check is the only purpose. But, unlike array_filter(), the callback always requires two arguments. There's no way to change this, so some a lot of old-fashioned string callables are no longer usable.

<?php
$arr = [45, 'abc', 'def', 'ghi'];

if (array_filter($arr, 'is_integer')) {
    // works because of loose comparison: [45] == true
}

if (array_any($arr, 'is_integer')) {
    // PHP Warning:  Uncaught ArgumentCountError: is_integer() expects exactly 1 argument, 2 given
}
?>
To Top