好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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:数字键名,代码如下:

$a  =  array (       'a' ,  );  $b  =  array (       'u' ,  );  $c  =  $a  +  $b ;  var_dump( $c );    output:  array (1) {    [0]=>    string(1)  "a"   } 

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

$a  =  array (      66=> 'a' ,  );  $b  =  array (      60=> 'u' ,      66=> 'c'   );  $c  =  $a  +  $b ;  var_dump( $c );    output:  array (2) {    [66]=>    string(1)  "a"     [60]=>    string(1)  "u"   } 

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

<?php    $a  =  array (      1=> 'a' ,      2=> 'b' ,       'c' => 'c' ,       'd' => 'd' ,  );  $b  =  array (      1=> 'u' ,      3=> 'v' ,       'c' => 'w' ,       'd' => 'x' ,       'y' => 'y' ,      60=> 'z' ,  );  $c  =  $a  +  $b ;  var_dump( $c );  ?>  //output:   array (7) {    [1]=>    string(1)  "a"     [2]=>    string(1)  "b"     [ "c" ]=>    string(1)  "c"     [ "d" ]=>    string(1)  "d"     [3]=>    string(1)  "v"     [ "y" ]=>    string(1)  "y"     [60]=>    string(1)  "z"   } 

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) 

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

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

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

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) 

查看更多关于PHP数组合并函数+、array_merge、array_merge_recursive的详细内容...

  阅读:49次