PHP数组合并:操作符(+)、array_merge、array_merge_recursive总结

      发布在:Php, Technology      评论:0 条评论

今天来总结下PHP里面的数组合并的知识点。

PHP中,有3种方法来进行数组合并:操作符(+)、array_merge、array_merge_recursive,其中前两种方式为一维数组的合并,第三种为递归合并。

在说PHP的数组合并之前,先要明白,PHP的数组分为索引数组和关联数组。索引数组是指没有键值和键值为数字的数组,关联数组是指键值为字符的数组。

下面说说操作符(+)和array_merge的区别:

1.当为索引数组时,合并相同键值的数组,操作符以最前面的值为合并后的结果,array_merge则是把相同键值的数组合并,并重新索引(不同键值的数组合并时,也会从0开始重新生成数字索引)。

例:

$arr1 = array('a');

$arr2 = array('b');

var_dump($arr1+$arr2);

var_dump(array_merge($arr1,$arr2));

输出:

array (size=1)
  0 => string 'a' (length=1)
array (size=2)
  0 => string 'a' (length=1)
  1 => string 'b' (length=1)

2.当为关联数组时,合并相同字符键值的数组,操作符合并规则是前面的覆盖后面的,array_merge则是后面的覆盖前面的。

例:

$arr5 = array('a'=>'aaaa');
$arr6 = array('a'=>'bbbb');

var_dump($arr5+$arr6);
var_dump(array_merge($arr5,$arr6));

输出:

array (size=1)
  'a' => string 'aaaa' (length=4)
array (size=1)
  'a' => string 'bbbb' (length=4)

3.array_merge_recursive的合并规则和array_merge相同,只是array_merge_recursive支持多维数组的合并。

例:

$a = array(

1=>'a',
2=>'b',
'c'=>'c',
'd'=>'d',

);

$b = array(
1=>'u',
3=>'v',
'c'=>'w',
'd'=>'x',
'y'=>'y',
60=>'z',

);

var_dump(array_merge_recursive($a,$b));

输出:

array (size=8)
  0 => string 'a' (length=1)
  1 => string 'b' (length=1)
  'c' => 
    array (size=2)
      0 => string 'c' (length=1)
      1 => string 'w' (length=1)
  'd' => 
    array (size=2)
      0 => string 'd' (length=1)
      1 => string 'x' (length=1)
  2 => string 'u' (length=1)
  3 => string 'v' (length=1)
  'y' => string 'y' (length=1)
  4 => string 'z' (length=1)
Responses