一些新的数组函数正在加入 PHP 8.4
PHP 8.4 仍在开发中,到目前为止已经有了一系列新功能和改进。新功能不断出现,其中一个最近出现的功能是添加了新的数组方法。
有一个 RFC(仍处于投票阶段),它建议添加这些新方法,这些方法本质上与检查数组中是否存在与特定条件匹配的元素有关。
新方法是:
- array_find
- array_find_key
- array_any
- array_all
array_find 方法
array_find
返回 $callback
返回值为 true
的第一个元素的值。如果没有找到匹配的元素,函数将返回 NULL
。
array_find(array $array, callable $callback)
示例如下:
$fruits = [
'apple' => 'red',
'banana' => 'yellow',
'orange' => 'orange',
];
var_dump(array_find($fruits, function ($fruit) {
return str_starts_with($fruit, 'y')
}));
// Output: string(5) "yellow"
var_dump(array_find($fruits, function ($fruit) {
return str_starts_with($fruit, 'z')
}));
// Output: NULL
array_find_key 方法
array_find_key 返回 $callback
返回值为 true
的第一个元素的键。
array_find_key(array $array, callable $callback)
示例如下:
$fruits = [
'apple' => 'red',
'banana' => 'yellow',
'orange' => 'orange',
];
var_dump(array_find_key($fruits, function ($fruit) {
return str_starts_with($fruit, 'y')
}));
// Output: string(5) "banana"
var_dump(array_find_key($fruits, function ($fruit) {
return str_starts_with($fruit, 'z')
}));
// Output: NULL
array_any 方法
如果数组中的任何元素通过 $callback
测试,array_any
方法将返回 true
。否则,它将返回 false
。
array_any(array $array, callable $callback)
此方法类似于 JavaScript 中的
Array.prototype.some()
方法。
示例如下:
$fruits = [
'apple' => 'red',
'banana' => 'yellow',
'orange' => 'orange',
];
var_dump(array_any($fruits, function ($fruit) {
return str_starts_with($fruit, 'y')
}));
// Output: true
var_dump(array_any($fruits, function ($fruit) {
return str_starts_with($fruit, 'z')
}));
// Output: false
array_all 方法
如果数组中的所有元素都通过 $callback
测试,array_all
方法将返回 true
。否则,它将返回 false
。
array_all(array $array, callable $callback)
示例如下:
$fruits = [
'apple' => 'red',
'banana' => 'yellow',
'orange' => 'orange',
];
var_dump(array_all($fruits, function ($fruit) {
return strlen($fruit) > 2
}));
// Output: true
var_dump(array_all($fruits, function ($fruit) {
return str_starts_with($fruit, 'z')
}));
// Output: false
结语
虽然 RFC 仍处于投票阶段,但我相信这些方法最终将成为 PHP 8.4 的一部分,以观察投票趋势,因为目前大多数投票都赞成添加这些方法。
这些数组方法真的很好,让我们可以编写更简洁、可读的代码。