合并两个数组有几种方式,试比较它们的异同

时间:2020-05-01

array_merge — 合并一个或多个数组

array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

+合并

如果你想完全保留原有数组并只想新的数组附加到后面,用 + 运算符。

在两个数组中存在相同的键名时,第一个数组中的同键名的元素将会被保留,第二个数组中的元素将会被忽略。

array_merge_recursive — 递归地合并一个或多个数组

array_merge_recursive() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。需要注意的是,如果数组具有相同的数值键名,后一个值将不会覆盖原来的值,而是附加到后面。

数字索引

$arr1 = [1, 2, 3];
$arr2 = [2, 3, 4];
var_dump(array_merge($arr1, $arr2));
var_dump($arr1 + $arr2);
var_dump(array_merge_recursive($arr1, $arr2));

关联索引

$arr1 = ['name' => 'wyzda', 'age' => 18];
$arr2 = ['sex' => '男', 'age' => 23];
var_dump(array_merge($arr1, $arr2));
var_dump($arr1 + $arr2);
var_dump(array_merge_recursive($arr1, $arr2));