PHP 8.4 新增的是 array_find 和 array_find_key,而非 array_first;原生已有 reset()、array_key_first()+索引取值等多种轻量方式获取首元素,无需新增函数。

PHP 8.4 并没有 array_first 这个函数,官方新增的是 array_find 和 array_find_key ——它们用于查找**满足条件的第一个元素或键**,而不是简单取首个(索引为 0 或第一个插入顺序的)元素。
为什么不用 array_first?
PHP 原生已有多种方式获取首个元素,无需额外函数:
-
reset($array):重置数组指针并返回第一个值(会改变内部指针,但最轻量) -
current($array):返回当前指针位置的值(需配合reset才可靠) -
array_values($array)[0] ?? null:安全取索引 0,适用于数值索引场景 -
array_key_first($array)+$array[key]:PHP 7.3+ 支持,先取首键再取值,保持键值关联性
兼容低版本的自定义 array_first 封装
如果你坚持用 array_first($array) 这种语义清晰的写法,可按以下方式安全封装(兼容 PHP 5.6+):
if (!function_exists('array_first')) {
function array_first(array $array, $default = null) {
if (empty($array)) {
return $default;
}
foreach ($array as $value) {
return $value;
}
return $default;
}
}
说明:
立即学习“PHP免费学习笔记(深入)”;
- 不依赖内部指针,不修改原数组状态
- 支持关联数组、空数组、含 false/null 值的数组
- 返回值严格对应第一个插入的元素(PHP 7.4+ 保证插入顺序,旧版也基本如此)
对比 array_find:别混淆用途
array_find(PHP 8.4+)是条件查找,不是“取第一个”:
-
array_first($arr)→ 总是返回$arr的第一个元素(不管内容) -
array_find($arr, fn($v) => true)→ 等价于array_first,但绕路且低效 -
array_find($arr, fn($v) => $v > 10)→ 真正价值所在:带逻辑筛选
生产环境建议
直接使用 reset($array) 或封装好的 array_first 即可。不必为“看起来像 Laravel 的 collect()->first()”而强套新函数——PHP 原生方案更稳定、无版本绑定、零运行时开销。



















