##数组合并的方法 三种
PHP中,有3种方法来进行数组合并:操作符(+)、array_merge、array_merge_recursive,其中前两种方式为一维数组的合并,第三种为递归合并。
索引数组和关联数组
在说PHP的数组合并之前,先要明白,PHP的数组分为索引数组和关联数组。
索引数组是指没有键值和键值为数字的数组,关联数组是指键值为字符的数组
#+和array_merge区别
索引数组:
<?php
function dd($arr){
echo '<pre/>';
print_r($arr);
}
$a = array(
'a',
);
$b = array(
'u',
);
$c = $a + $b;
$d=array_merge($a,$b);
dd($c);
Array
(
[0] => a
)
dd($d);
Array
(
[0] => a
[1] => u
)
+号: 合并相同键值的数组,操作符以最前面的值为合并后的结果
array_merge:把相同键值的数组合并,并重新索引(不同键值的数组合并时,也会从0开始重新生成数字索引 (重新生成数字索引索引)
##+”运算符
+”运算符
规则:
当两个数组的键名是数字键名或者字符串键名
$c = $a + $b
在$a后追加($b在$a中不存在的键名)键名和值
注意:
1、不覆盖,只是追加不存在的键名和对应的值
2、键名不重新索引
3、无论是全部数字键名还是混合,都只是追加键名和值,
如果键名相同则不进行追加,即把最先出现的值作为最终结果返回
当为关联数组时,合并相同字符键值的数组,+操作符合并规则是前面的覆盖后面的,array_merge则是后面的覆盖前面的。
array_merge() 将一个或多个PHP数组合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引
.array_merge_recursive的合并规则和array_merge相同,只是array_merge_recursive支持多维数组的合并