
PHP 8.5 并未引入 array_first() 函数。截至目前(2024年),PHP 官方尚未发布 8.5 版本,最新稳定版是 PHP 8.3,而 PHP 8.4 仍在开发中,也未包含名为 array_first() 的内置函数。
PHP 中获取数组第一个元素的常用方法
虽然没有 array_first(),但有多种简洁、安全的方式获取首个元素,尤其在 PHP 7.4+ 和 8.x 中更推荐以下写法:
- 使用解构语法(PHP 7.1+):适用于索引数组,可避免修改原数组
$first = $arr[0] ?? null; —— 最简方式,支持空数组兜底
-
使用
reset()+current():兼容关联/索引数组,不改变内部指针(reset()会重置指针,current()读取当前值)
$first = reset($arr) ?: null; —— 注意:该操作会将数组内部指针移到首位(副作用)
立即学习“PHP免费学习笔记(深入)”;
-
使用
array_key_first()+ 键访问(PHP 7.3+):最健壮,适用于任意数组(包括空数组、关联数组),无副作用
$key = array_key_first($arr); $first = $key !== null ? $arr[$key] : null;
为什么不建议依赖“array_first()”?
该函数名常见于 Laravel 的 Illuminate\Support\Arr 工具类(如 Arr::first($array)),属于框架扩展,并非 PHP 核心函数。直接在原生 PHP 中调用会报 Fatal error: Uncaught Error: Call to undefined function array_first()。
若你看到相关代码,大概率是混淆了 Laravel 辅助函数或第三方库(如 ramsey/array_replace 等)。
PHP 8.4+ 值得关注的新特性(与数组相关)
PHP 8.4 计划引入 ArrayObject::first() 和 ArrayObject::last() 方法(RFC 已通过),但仅限 ArrayObject 实例,不作用于普通数组。普通数组仍需用上述原生方式处理。
未来若真有 array_first() 进入核心,官方一定会在 Changelog 和手册中明确标注 —— 建议以 PHP 官方数组函数文档 为准。











