PHP数组添加元素的几种方法详解与对比

Mason
Mason
发布时间:2026-10-14| 3人浏览过
原创

本文总结了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数组操作技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。