nber1994



php数组合并的坑

October 24, 2017

胡乱记录了php合并数组时遇到的坑

数组合并的 += 写法

<?php

$a = [
    1 => '12312',
    2 => '123',
];

$b = [
    1 => 'a',
    2 => 'b',
];

$c = [
    3 => 'a',
    4 => 'b',
];

echo '两个数组索引相同:' . php_EOL;
$a += $b;
print_r($a);

echo '两个数组索引不同:' . php_EOL;
$b += $c;
print_r($b);

返回的结果:

两个数组索引相同:
Array
(
    [1] => 12312
    [2] => 123
)
两个数组索引不同:
Array
(
    [1] => a
    [2] => b
    [3] => a
    [4] => b
)

array_merge写法

<?php
$a =[
   'a' => '字母键值1',
    1 => '数字键值1',
    2 => '数字键值2',
   'b' => '字母键值2',
];
$b = [
   'a' => '字母键值3',
   'b' => '字母键值4',
];
 $c = [
    1 => '数字键值1',
    2 => '数字键值2',
];

echo '两个数组索引存在相同的:' . php_EOL;
var_dump(array_merge($a, $b));
echo '两个数组索引存在相同数字:' . php_EOL;
var_dump(array_merge($a, $c));

返回的结果:

两个数组索引存在相同的:
array(4) {
  ["a"]=>
  string(13) "字母键值3"
  [0]=>
  string(13) "数字键值1"
  [1]=>
  string(13) "数字键值2"
  ["b"]=>
  string(13) "字母键值4"
}
两个数组索引存在相同数字:
array(6) {
  ["a"]=>
  string(13) "字母键值1"
  [0]=>
  string(13) "数字键值1"
  [1]=>
  string(13) "数字键值2"
  ["b"]=>
  string(13) "字母键值2"
  [2]=>
  string(13) "数字键值1"
  [3]=>
  string(13) "数字键值2"
}

踩坑总结

array_merge

+=操作