背景

php处理数组合并有两种方式array_mergearr + arr,区别如下:

  1. 对于关联数组,如果存在相同的key, array_merge是后面覆盖起前面的,arr+arr是前面的覆盖后面的。
  2. 对于索引数组,如果存在相同的key,array_merge是会追加append不会覆盖;arr + arr是前面的覆盖后面的
  3. 对于索引重排,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

d.m.o.h.strive
1 声望0 粉丝

书山有路勤为径,学海无涯苦作舟