在php中对两个数组进行合并,通常使用array_merge或者’+’运算符 他们的区别是什么

187 阅读1分钟

测试代码

<?php
$cfg = [
    0 => 'cfg-1',
    1 => 'cfg-1',
    'name' => 'hlq',
    'age' => 18,
    'job' => 'engineer'
];

$default = [
    0 => 'default-0',
    1 => 'default-1',
    'name' => 'hlq',
    'age' => 16,
    'hobby' => 'readding'
];

var_dump($cfg + $default);

var_dump(array_merge($cfg, $default));

运行结果

array(6) {
  [0]=>
  string(5) "cfg-1"
  [1]=>
  string(5) "cfg-1"
  ["name"]=>
  string(3) "hlq"
  ["age"]=>
  int(18)
  ["job"]=>
  string(8) "engineer"
  ["hobby"]=>
  string(8) "readding"
}
array(8) {
  [0]=>
  string(5) "cfg-1"
  [1]=>
  string(5) "cfg-1"
  ["name"]=>
  string(3) "hlq"
  ["age"]=>
  int(16)
  ["job"]=>
  string(8) "engineer"
  [2]=>
  string(9) "default-0"
  [3]=>
  string(9) "default-1"
  ["hobby"]=>
  string(8) "readding"
}

结论

  1. array_merge和 ‘+’ 都可以合并数组
  2. array_merge会对相同字符串键名,用后面的数据重写数据,而加号不会
  3. array_merge对数字键名数据不会重写,而是根据数字键名接着写入数据,而加号会用前面的数字键名重写后面的