PHP数组添加元素的几种方法详解与对比
本文总结了PHP中向数组添加元素的多种方法,包括使用array_push()追加元素、直接通过空下标赋值、利用array_unshift()在数组头部插入,以及通过合并函数或+操作符处理关联数组。详细分析了各方法的适用场景与性能差异,帮助开发者根据实际需求选择最佳方案。
一维数组末尾追加元素
在PHP中,向一维数组末尾添加单个或批量元素主要有两种常用方式:内置函数 array_push() 和直接使用空方括号 [] 下标赋值。
第1步:使用 array_push() 函数
array_push() 用于将一个或多个值插入数组的尾部(末尾)。该函数接受至少两个参数:第一个参数为被操作的数组引用,后续参数为要添加的值。
$arr = array();
array_push($arr, 'el1', 'el2');
此方法可以一次性添加多个元素,且返回的是添加后数组的新长度。需要注意的是,如果第一个参数不是数组,PHP会发出警告。
第2步:使用空下标直接赋值
相比函数调用,直接给未定义的键名赋值为更直接且通常更快的做法:
$arr = array();
$arr[] = 'el1';
$arr[] = 'el2';
这两种方法的效果完全一致,生成的数组索引均为从0开始的连续整数。对于单一值的添加,$arr[] = 'value' 通常被认为比 array_push() 性能略优,因为避免了函数调用的开销。
在数组头部插入元素
若需要将新元素添加到数组的最前面,同时保持原有元素的顺序,应使用 array_unshift() 函数。
第1步:使用 array_unshift()
array_unshift() 从数组开端插入一个新的或多个元素。所有已有的数值键名都将修改为从零开始的数字,而关联键名保持不变。
$arr = array('banana', 'apple');
array_unshift($arr, 'watermelon', 'grape');
print_r($arr);
/*
输出结果:
Array
(
[0] => watermelon
[1] => grape
[2] => banana
[3] => apple
)
*/
注意:该方法同样以引用方式传递数组,并返回新数组的元素个数。
关联数组或混合数组的添加策略
对于关联数组,或者希望在不破坏原有索引结构的情况下在特定位置(如开头)添加元素,直接使用 array_push 或 array_unshift 可能不符合预期(因为它们会重置数值索引)。此时可采用合并函数或运算符。
第2步:使用 array_merge() 合并数组
array_merge() 可以将一个或多个数组合并成一个数组。如果在开头添加关联元素,可以将新元素作为第一个参数传入:
$arr = array('a', 'b');
$arr = array_merge(array('front' => '你好'), $arr);
print_r($arr);
/*
输出:
Array
(
[front] => 你好
[0] => a
[1] => b
)
*/
注意:如果使用相同字符串键名进行合并,后面的值将覆盖前面的值。
第3步:使用 + 运算符
+ 运算符用于合并数组,但其行为与 array_merge 不同:对于相同的字符串键名,左边数组的值会被保留,右边数组的同名键值将被忽略。它也可用于在逻辑上“前置”数组:
$arr = array('a', 'b');
$arr = array('front' => '你好') + $arr;
print_r($arr);
/*
输出:
Array
(
[front] => 你好
[0] => a
[1] => b
)
*/
此方法适合只需保留左侧键值的场景,性能优于数组拷贝合并。
第4步:直接在末尾添加关联键
如果只想在数组末尾增加一个关联元素,无需移动其他元素,最简单的方式是直接指定键名:
$arr = array('a', 'b');
$arr['front'] = '你好';
print_r($arr);
/*
输出:
Array
(
[0] => a
[1] => b
[front] => 你好
)
*/
这种方式不会改变原有数值索引的结构,也不会触发函数调用,是添加单个关联元素最高效的方法。
总结与注意事项
- 性能考量:
$arr[] = 'val'在添加单值时通常比array_push()快,但在批量添加时差距不大。 - 索引重置:
array_unshift()和array_push()会影响数值键的顺序(分别前移和后扩),若需严格保留键名,建议使用直接赋值或array_combine。 - 键名冲突:
array_merge()后覆盖,+运算左优先。
以上就是PHP数组添加元素方法小结的详细内容,更多关于PHP数组操作技巧的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









