php专区

 首页 > php专区 > PHP基础 > 数组 > PHP数组合并函数+、array_merge、array_merge_recursive

PHP数组合并函数+、array_merge、array_merge_recursive

分享到:
【字体:
导读:
          我在php学习在使用到最多的数据合并方法就是array_merge、array_merge_recursive函数了,当然还会少用到操作符(+)函数了,下面我来给大家整理一下这几个函数的一些用法...

PHP数组合并函数+、array_merge、array_merge_recursive

我在php学习在使用到最多的数据合并方法就是array_merge、array_merge_recursive函数了,当然还会少用到操作符(+)函数了,下面我来给大家整理一下这几个函数的一些用法.

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

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

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

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

1、“+”运算符

规则:当两个数组的键名是数字键名或者字符串键名 $c = $a + $b 在$a后追加($b在$a中不存在的键名)键名和值

注意:1、不覆盖,只是追加不存在的键名和对应的值 2、键名不重新索引 3、无论是全部数字键名还是混合,都只是追加键名和值,如果键名相同则不进行追加,即把最先出现的值作为最终结果返回.

例1:数字键名,代码如下:

  1. $a = array
  2.     'a'
  3. ); 
  4. $b = array
  5.     'u'
  6. ); 
  7. $c = $a + $b
  8. var_dump($c); 
  9.  
  10. output: 
  11. array(1) { 
  12.   [0]=> 
  13.   string(1) "a" 

例2:数字键名,代码如下:

  1. $a = array
  2.     66=>'a'
  3. ); 
  4. $b = array
  5.     60=>'u'
  6.     66=>'c' 
  7. ); 
  8. $c = $a + $b
  9. var_dump($c); 
  10.  
  11. output: 
  12. array(2) { 
  13.   [66]=> 
  14.   string(1) "a" 
  15.   [60]=> 
  16.   string(1) "u" 

例3:字符键名,代码如下:

  1. $a = array
  2.     1=>'a'
  3.     2=>'b'
  4.     'c'=>'c'
  5.     'd'=>'d'
  6. ); 
  7. $b = array
  8.     1=>'u'
  9.     3=>'v'
  10.     'c'=>'w'
  11.     'd'=>'x'
  12.     'y'=>'y'
  13.     60=>'z'
  14. ); 
  15. $c = $a + $b
  16. var_dump($c); 
  17. ?> 
  18. //output: 
  19. array(7) { 
  20.   [1]=> 
  21.   string(1) "a" 
  22.   [2]=> 
  23.   string(1) "b" 
  24.   ["c"]=> 
  25.   string(1) "c" 
  26.   ["d"]=> 
  27.   string(1) "d" 
  28.   [3]=> 
  29.   string(1) "v" 
  30.   ["y"]=> 
  31.   string(1) "y" 
  32.   [60]=> 
  33.   string(1) "z" 

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

例,代码如下:

  1. $arr5 = array('a'=>'aaaa'); 
  2. $arr6 = array('a'=>'bbbb'); 
  3. var_dump($arr5+$arr6); 
  4. var_dump(array_merge($arr5,$arr6)); 
  5. //输出: 
  6. array (size=1) 
  7.   'a' => string 'aaaa' (length=4) 
  8. array (size=1) 
  9.   'a' => string 'bbbb' (length=4) 

array_merge() 将一个或多个PHP数组合并起来,一个数组中的值附加在前一个数组的后面,返回作为结果的数组。

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值,然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面.

如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

3.array_merge_recursive的合并规则和array_merge相同,只是array_merge_recursive支持多维数组的合并,例,代码如下:

  1. $a = array
  2.  
  3. 1=>'a'
  4. 2=>'b'
  5. 'c'=>'c'
  6. 'd'=>'d'
  7.  
  8. ); 
  9.  
  10. $b = array
  11. 1=>'u'
  12. 3=>'v'
  13. 'c'=>'w'
  14. 'd'=>'x'
  15. 'y'=>'y'
  16. 60=>'z'
  17.  
  18. ); 
  19. var_dump(array_merge_recursive($a,$b)); 
  20. //输出: 
  21. array (size=8) 
  22.   0 => string 'a' (length=1) 
  23.   1 => string 'b' (length=1) 
  24.   'c' =>  
  25.     array (size=2) 
  26.       0 => string 'c' (length=1) 
  27.       1 => string 'w' (length=1) 
  28.   'd' =>  
  29.     array (size=2) 
  30.       0 => string 'd' (length=1) 
  31.       1 => string 'x' (length=1) 
  32.   2 => string 'u' (length=1) 
  33.   3 => string 'v' (length=1) 
  34.   'y' => string 'y' (length=1) 
  35.   4 => string 'z' (length=1) 
分享到:
php数组元素添加到数组头部(array_unshif...
php数组元素添加到数组头部(array_unshift的用法) 在php中像数组中添加元素比较常见的是array_push函数,即数组的入栈操作,但是这个函数是将元素添加到数组的末尾,如果需要将数组元素压入到数组的头部(即第一个元素)该如何操作呢? 使用php内置函数 array_unshift,下面就将 array_unshift 这...
php数组函数排序之rsort() - 对数组的元...
php数组函数排序之rsort() - 对数组的元素值进行降序排序 本文章简单的讲解一下关于php利用自身的函数对数组的元素值进行降序排序方法,有需要的参考下. rsort() 函数对数组的元素按照键值进行逆向排序.与 arsort() 的功能基本相同. 注释;该函数为 array 中的单元赋予新的键名.这将删除原有...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……