背景
php处理数组合并有两种方式array_merge
和 arr + arr
,区别如下:
- 对于关联数组,如果存在相同的key,
array_merge
是后面覆盖起前面的,arr+arr
是前面的覆盖后面的。 - 对于索引数组,如果存在相同的key,
array_merge
是会追加append
不会覆盖;arr + arr
是前面的覆盖后面的 - 对于索引重排,
array_merge
会重新排数字索引,arr + arr
则不会
常见使用场景
1. 关联数组合并
//默认配置
$defaultConfig = ['timeout' => 1];
//自定义配置
$inputParam = ['timeout' => 2];
//用自定义配置覆盖默认配置
$merged = array_merge($defaultConfig, $inputParam);
2. 索引数组合并保留原索引
$userMap1 = [
//uid为111的用户信息
'111' => [...]
//uid为112的用户信息
'112' => [...]
];
$userMap2 = [
//uid为222的用户信息
'222' => [...]
];
//需要合并上面两份用户信息,如果用array_merge就会重排数字索引,导致uid丢失,此时用 arr + arr就是个不错的选择
$combinedUserMap = $userMap1 + $userMap2
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。