php 数组合并array_merge与array_merge_recursive详解
array_merge和array_merge_recursive是PHP中用于合并数组的两个函数。它们的区别在于当数组键名冲突时的处理方式。
- array_merge函数:
- array_merge函数将一个或多个数组合并为一个数组。
- 当有多个数组作为参数传入时,它会按顺序将数组合并,后面的数组的元素会追加到前面数组的末尾。
- 如果数组的键名是数字,合并后的键名会重新索引。
- 如果数组的键名是字符串,且有相同的键名,后面的键名会覆盖前面的键名。
示例:
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "circle");
$mergedArray = array_merge($array1, $array2);
print_r($mergedArray);
输出:
Array
(
[color] => green
[0] => 2
[1] => 4
[2] => a
[3] => b
[shape] => circle
)
- array_merge_recursive函数:
- array_merge_recursive函数将一个或多个数组递归地合并为一个数组。
- 当有多个数组作为参数传入时,它会按顺序将数组合并,后面的数组的元素会追加到前面数组的末尾。
- 如果数组的键名是数字,合并后的键名会重新索引。
- 如果数组的键名是字符串,且有相同的键名,合并后的值会以数组形式存储。
示例:
$array1 = array("color" => array("favorite" => "red"), 2, 4);
$array2 = array("color" => array("favorite" => "green", "blue"), "a", "b");
$mergedArray = array_merge_recursive($array1, $array2);
print_r($mergedArray);
输出:
Array
(
[color] => Array
(
[favorite] => Array
(
[0] => red
[1] => green
)
[0] => blue
)
[0] => 2
[1] => 4
[2] => a
[3] => b
)
综上所述,array_merge和array_merge_recursive函数都可以用于合并数组,但在处理键名冲突时的方式不同。array_merge会覆盖前面的键名,而array_merge_recursive会将相同键名的值以数组形式存储。根据具体的需求选择适合的函数进行数组合并操作。