PHP 数组操作:array_push()、array_pop()、array_merge()
PHP 中的数组是处理数据的核心工具。掌握几个基础函数,能让你高效地增删合并数组元素。下面直接介绍 array_push()、array_pop() 和 array_merge() 的用法和注意事项。
使用 array_push() 向数组末尾添加元素
调用 array_push() 函数可将一个或多个值追加到数组的末尾。
- 准备一个已有数组,例如
$fruits = ['apple', 'banana'];`。 2. **执行** `array_push($fruits, 'orange');,此时$fruits` 变为 `['apple', 'banana', 'orange']`。 3. **支持**一次添加多个值:`array_push($fruits, 'grape', 'kiwi');会把两个水果都加到末尾。
注意:array_push() 会直接修改原数组,不需要额外赋值。但若数组键是数字索引,新元素会按顺序递增;若是关联数组(带字符串键),新元素仍使用数字索引,可能造成键类型混杂。
$colors = ['red', 'green'];
array_push($colors, 'blue', 'yellow');
// $colors 现在是 [0 => 'red', 1 => 'green', 2 => 'blue', 3 => 'yellow']
```
替代写法:也可以用 `$array[] = 'value';` 添加单个元素,性能略优于 `array_push()`,但无法一次加多个。
---
## 使用 array_pop() 从数组末尾移除并返回元素
**调用** `array_pop()` 会删除数组最后一个元素,并**返回**该元素的值。
1. **准备**一个非空数组,如 `$stack = [10, 20, 30];`。
2. **执行** `$last = array_pop($stack);`,此时 `$last` 的值是 `30`,而 `$stack` 变为 `[10, 20]`。
3. **检查**返回值:如果原数组为空,`array_pop()` 返回 `null`,且原数组不变。
此函数常用于实现“栈”结构(后进先出)。它同样直接修改原数组。
```php
$numbers = [1, 2, 3];
$popped = array_pop($numbers);
// $popped 是 3,$numbers 是 [1, 2]
警告:不要对关联数组使用 array_pop(),因为“末尾”由内部指针决定,结果可能不符合直觉。
使用 array_merge() 合并两个或多个数组
调用 array_merge() 可将多个数组拼接成一个新数组,不修改原数组。
- 准备两个数组:
$a = ['x', 'y']; $b = ['z']; - 执行 `$combined = array_merge($a, $b);`,结果是 `['x', 'y', 'z']`。
3. **处理**数字键:合并时会重新索引,从 0 开始连续编号。
4. **处理**字符串键:若键名相同,后面的值会覆盖前面的。
```php
$arr1 = ['a' => 1, 'b' => 2];
$arr2 = ['b' => 3, 'c' => 4]; $result = array_merge($arr1, $arr2);
// $result 是 ['a' => 1, 'b' => 3, 'c' => 4] ``` 特殊情况:如果所有输入数组都是数字索引,结果也是连续数字索引;只要有一个是关联数组,结果就保留其键名。 | 输入数组类型 | 合并后键的行为 | | :--- | :--- | | 全为数字索引 | 重置为从 0 开始的连续整数 | | 含字符串键 | 字符串键保留,数字键仍重置 | 例如: ```php $num = [10, 20];
$assoc = ['first' => 100]; $merged = array_merge($num, $assoc);
// 结果: [0 => 10, 1 => 20, 'first' => 100]
常见错误与最佳实践
- 误以为 array_merge() 修改原数组:它总是返回新数组,原数组不变。记得接收返回值。
- 在空数组上使用 array_pop():会返回
null,需提前判断数组是否为空。 - 混合使用数字键和字符串键:可能导致意外覆盖或索引混乱。尽量保持数组类型一致。
- 性能考虑:对于只添加一个元素,优先用 `$arr[] = value;` 而非 `array_push()`。
正确示例:
```php
$data = [];
$data[] = 'start'; // 高效添加 array_push($data, 'middle', 'end'); // 一次加多个
$final = array_merge($data, ['extra']);
$last_item = array_pop($final); // 安全弹出

暂无评论,快来抢沙发吧!