
在PHP中,合并数组是一项常见的任务。PHP提供了多种函数来合并数组,每个函数都有其特定的用途和行为。以下是几种常用的数组合并函数及其用法:
1. array_merge()
array_merge() 函数用于合并一个或多个数组。如果数组具有相同的字符串键名,则后面的值将覆盖前面的值;如果数组具有相同的数字键名,则后面的值不会覆盖前面的值,而是重新索引。
示例代码:
$array1 = ["color" => "red", 2, 4]; $array2 = ["a" => "green", "b" => "brown", 2 => "blue", "0" => "yellow"]; $result = array_merge($array1, $array2); print_r($result);输出结果:
Array ( [color] => red [0] => 2 [1] => 4 [a] => green [b] => brown [2] => blue [3] => yellow )2. array_merge_recursive()
array_merge_recursive() 函数递归地合并一个或多个数组。如果数组有相同的字符串键名,则值会被合并成一个数组,而不是被替换。对于数字键名,行为类似于 array_merge()。
示例代码:
$array1 = ["color" => "red", 2, 4]; $array2 = ["color" => "green", "shape" => "trapezoid", 4 => "black"]; $result = array_merge_recursive($array1, $array2); print_r($result);输出结果:
Array ( [color] => Array ( [0] => red [1] => green ) [0] => 2 [1] => 4 [shape] => trapezoid [2] => black )3. + 操作符(数组联合)
使用 + 操作符可以合并两个数组。如果数组有相同的字符串键名,则保留第一个数组中的值,忽略第二个数组中的值。对于数字键名,行为类似于 array_merge()。
示例代码:
$array1 = ["color" => "red", 2, 4]; $array2 = ["color" => "green", "shape" => "trapezoid", 2 => "blue"]; $result = $array1 + $array2; print_r($result);输出结果:
Array ( [color] => red [0] => 2 [1] => 4 [shape] => trapezoid [2] => blue )4. array_replace() 和 array_replace_recursive()
array_replace() 函数用后面数组的值替换前面数组的对应值。如果键不存在于前一个数组中,则将其添加到结果数组的末尾。
array_replace_recursive() 函数递归地进行替换操作。如果数组有相同的字符串键名且对应的值是数组,那么这些值将被递归地合并。
示例代码(array_replace):
$array1 = ["color" => "red", 2, 4]; $array2 = ["color" => "green", "shape" => "trapezoid", 2 => "blue"]; $result = array_replace($array1, $array2); print_r($result);输出结果:
Array ( [color] => green [0] => 2 [1] => 4 [shape] => trapezoid [2] => blue )示例代码(array_replace_recursive):
$array1 = ["color" => ["favorite" => "red"], 2, 4]; $array2 = ["color" => ["favorite" => "green", "blue"], "shape" => "trapezoid"]; $result = array_replace_recursive($array1, $array2); print_r($result);输出结果:
Array ( [color] => Array ( [favorite] => green [0] => blue ) [0] => 2 [1] => 4 [shape] => trapezoid )选择哪种数组合并函数取决于你的具体需求,例如是否需要递归合并、是否希望覆盖重复键等。
