最直接的末尾追加方式是array_push(),但它返回新长度而非数组,不可链式调用或赋值;单元素推荐[]语法,高效且简洁;禁用array_merge()添加单元素,避免o(n)开销;函数内修改需显式引用传参。

用 array_push() 最直接,但要注意返回值陷阱
array_push() 是最常用的末尾追加方式,它接受数组和一个或多个待添加的元素,直接修改原数组并返回新长度。关键点在于:它**不返回新数组**,而是返回整数——所以不能链式调用或赋值给新变量来“获取结果数组”。
- 正确写法:
array_push($arr, 'new_item');—— 原$arr已被修改 - 错误写法:
$new_arr = array_push($arr, 'new_item');——$new_arr是数字(比如 5),不是数组 - 一次加多个:
array_push($arr, 'a', 'b', 'c');等价于三次单个追加,但更高效
用 [] 语法更轻量,适合单个元素
对索引数组,$arr[] = 'value'; 是最简洁、性能最好的末尾添加方式。PHP 自动计算下一个整数索引(即使中间有空缺,也仍按最大整数键 +1),且不涉及函数调用开销。
- 适用场景:只加一个元素,尤其在循环中高频调用时优先选它
- 注意:如果原数组为空,
$arr[] = 'x';会设键为0;如果已有键0, 2, 5,下一个是6,不是1 - 不能用于关联数组的“末尾”语义(PHP 数组无真正顺序保证,但插入位置在内部哈希表尾部)
别用 array_merge() 往末尾加单个元素
有人想用 array_merge($arr, ['new_item']),这虽能工作,但属于高开销误用:它会重建整个数组,复制所有键值,时间复杂度 O(n),而 [] 或 array_push() 是均摊 O(1)。
- 仅当你要合并两个「已有数组」时才用
array_merge() - 加单个元素还用它,相当于扛着梯子去够一米高的架子
- 额外风险:如果原数组含字符串键,
array_merge()会重排数字键,可能破坏你依赖的索引连续性
注意引用传递与函数内修改的边界
如果在函数里用 array_push() 或 [] 修改传入的数组,默认是值传递,外部原数组不会变——除非你显式用引用。
- 函数内生效需声明:
function add_item(array &$arr, $val) { $arr[] = $val; } - 否则:
function add_item(array $arr, $val) { $arr[] = $val; }—— 外部$arr完全不受影响 -
array_push()同样遵循此规则,它不自动引用原数组
array_push() 的返回值当成数组来用——这两个点一旦出错,调试时往往要花比写代码更久的时间去定位。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











