php 8.5 新增的 array_first() 和 array_last() 函数用于安全地获取数组的首尾元素,它们通过返回引用或默认值来解决空数组报错问题。调用时直接传入数组变量即可,若数组为空则返回 null(除非指定了默认值)。这两个函数避免了传统写法中先检查 count() 再取值导致的冗余代码。

如何获取数组第一个元素并处理空值?
array_first() 接收一个数组作为参数,返回该数组的第一个元素的值。如果数组为空,它返回 null。你可以提供一个可选的第二个参数作为默认值,当数组为空时返回该默认值而不是 null。

<?php // 示例输入 $fruits = ['apple', 'banana', 'cherry']; $emptyArray = []; // 获取第一个元素 $firstFruit = array_first($fruits); echo $firstFruit; // 输出: apple // 获取空数组的第一个元素,返回 null $firstEmpty = array_first($emptyArray); var_dump($firstEmpty); // 输出: NULL // 使用默认值 $defaultFirst = array_first($emptyArray, 'no fruit'); echo $defaultFirst; // 输出: no fruit // 修改引用 $val = array_first($fruits); $val = 'orange'; print_r($fruits); // 原数组不变,因为返回的是值而非引用(注:PHP 8.5 实现细节可能为值传递,需根据实际版本确认,通常此类辅助函数返回值为副本) ?>
预期结果:
1. $firstFruit 为字符串 'apple'。
2. $firstEmpty 为 null。
3. $defaultFirst 为字符串 'no fruit'。
4. 修改 $val 不影响原数组 $fruits。
立即学习“PHP免费学习笔记(深入)”;
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
如何获取数组最后一个元素并处理空值?
array_last() 与 array_first() 类似,但用于获取数组的最后一个元素。同样支持可选的默认值参数。这在处理动态生成的列表或从 API 获取的数据时非常有用,无需担心索引越界或空数组错误。

<?php // 示例输入 $numbers = [10, 20, 30]; $singleElement = [42]; $anotherEmpty = []; // 获取最后一个元素 $lastNumber = array_last($numbers); echo $lastNumber; // 输出: 30 // 单元素数组 $lastSingle = array_last($singleElement); echo $lastSingle; // 输出: 42 // 空数组返回 null $lastEmpty = array_last($anotherEmpty); var_dump($lastEmpty); // 输出: NULL // 使用默认值 $defaultLast = array_last($anotherEmpty, 0); echo $defaultLast; // 输出: 0 ?>
预期结果:
1. $lastNumber 为整数 30。
2. $lastSingle 为整数 42。
3. $lastEmpty 为 null。
4. $defaultLast 为整数 0。
当数组包含嵌套结构时,这两个函数如何处理?
当数组元素是嵌套数组或对象时,array_first() 和 array_last() 返回的是该嵌套结构的完整副本(或引用,取决于内部实现,通常为值拷贝)。这意味着你可以直接访问嵌套数据,而不会改变原数组的结构。例如,获取一个用户列表中的第一个用户的详细信息。


















