PHP数组合并的方式分两种,一种是使用函数array_merge ,另一种是直接使用"+"号。 但是在不同的索引数组中也会产生不同的结果。
1. 不指定数组下标
array_merge
$arr = [1, 2, 3, 4];
$arr1 = [5, 6, 7, 8];
$arr = array_merge($arr, $arr1);
var_dump($arr);
会产生直接将后面的数组连接到前一个数组后面
结果如下:
array(8) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
[7]=>
int(8)
}
“+”
当使用“+”号时 如果前一个存在相同的下标则不会合并
$arr = [1, 2, 3, 4];
$arr2 = [5, 6, 7, 8];
$arr = $arr + $arr2;
var_dump($arr);
结果:
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
}
2. 指定下标或不连续索引数组,
array_merge 会重新索引合并后的数组,后一个数组会拼到后面。
$arr = [1 => 1, 2 => 2, 3 => 3, 4];
$arr1 = [2 => 5, 3 => 6, 7, 8];
$arr = array_merge($arr, $arr1);
var_dump($arr);
array(8) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
[7]=>
int(8)
}
会直接保留下标,并合并两个数组。如果原数组与新数组中存在某个相同的下标,则保留原数组中的元素。抛弃新数组中的元素。
$arr = [1 => 1, 2 => 2, 3 => 3, 4];
$arr2 = [2 => 5, 3 => 6, 7, 8];
$arr = $arr + $arr2;
var_dump($arr);
结果:
array(5) {
[1]=>
int(1)
[2]=>
int(2)
[3]=>
int(3)
[4]=>
int(4)
[5]=>
int(8)
}