在PHP中,数组函数 array_merge_recursive () 用于递归地把一个或多个数组合并为一个数组。
函数语法:
array_merge_recursive (array1,array2,array3...) : array
函数参数说明:
参数 | 描述 |
---|---|
array1 | 必需。规定数组。 |
array2 | 可选。规定数组。 |
array3 | 可选。规定数组。 |
array_merge_recursive() 函数用于递归地把一个或多个数组合并为一个数组,并返回结果数组。
注意:
1. 如果输入的数组中有相同的字符串键名,后一个值将不会覆盖原来的值,而是将多个相同键名的值递归组成一个数组。
2. 如果数组具有相同的数值键名,后一个值将不会覆盖原来的值,而是附加到后面。
举例1,递归合并数组:
<?php // 定义数组 $arr1 = [1, 2, 3]; $arr2 = ['a', 'b', 'c']; // 递归合并数组 $res = array_merge_recursive($arr1, $arr2); var_dump($res);
以上代码输出如下(键名以 0 开始重新索引):
array (size=6) 0 => int 1 1 => int 2 2 => int 3 3 => string 'a' (length=1) 4 => string 'b' (length=1) 5 => string 'c' (length=1)
举例2,有相同字符串键名数组合并:
<?php // 定义数组 $arr1 = [1 => 1, 'b' => 2, 'c' => 3]; $arr2 = ['a' => 'a', 'b' => 'b', 'c' => 'c']; // 递归合并数组 $res = array_merge_recursive($arr1, $arr2); var_dump($res);
以上代码输出如下(后面数组元素值和前面同key元素的值合并成一个数组):
array (size=4) 0 => int 1 'b' => array (size=2) 0 => int 2 1 => string 'b' (length=1) 'c' => array (size=2) 0 => int 3 1 => string 'c' (length=1) 'a' => string 'a' (length=1)
举例3,有相同数字键名数组合并:
<?php // 定义数组 $arr1 = [1 => 1, 2 => 2, 3 => 3]; $arr2 = [1 => 'a', 2 => 'b', 3 => 'c']; // 递归合并数组 $res = array_merge_recursive($arr1, $arr2); var_dump($res);
以上代码输出如下(相同数字键名的元素不会覆盖):
array (size=6) 0 => int 1 1 => int 2 2 => int 3 3 => string 'a' (length=1) 4 => string 'b' (length=1) 5 => string 'c' (length=1)