array_merge
是 PHP 中的一个函数,用于合并一个或多个数组。它将一个或多个数组的元素合并到一个数组中。如果输入的数组中有相同的字符串键名,则后面的值会覆盖前面的值。对于数字键名,后面的值会被追加到数组中。
array_merge
可以合并以下类型的数组:
<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>
Array
(
[color] => green
[0] => 2
[1] => 4
[2] => a
[3] => b
[shape] => trapezoid
[4] => 4
)
原因:当两个数组中有相同的字符串键名时,后面的值会覆盖前面的值。
解决方法:
array_merge_recursive
:该函数在遇到键名冲突时,会将两个值合并成一个数组。<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge_recursive($array1, $array2);
print_r($result);
?>
输出:
Array
(
[color] => Array
(
[0] => red
[1] => green
)
[0] => 2
[1] => 4
[2] => a
[3] => b
[shape] => trapezoid
[4] => 4
)
<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = $array1;
foreach ($array2 as $key => $value) {
if (isset($result[$key])) {
// 处理键名冲突
$result[$key] = array_merge((array)$result[$key], (array)$value);
} else {
$result[$key] = $value;
}
}
print_r($result);
?>
输出:
Array
(
[color] => Array
(
[0] => red
[1] => green
)
[0] => 2
[1] => 4
[2] => a
[3] => b
[shape] => trapezoid
[4] => 4
)
通过以上方法,可以有效解决 array_merge
中遇到的键名冲突问题。
领取专属 10元无门槛券
手把手带您无忧上云