• array_merge、array_merge_recursive


    原文:http://www.111cn.net/phper/php/61889.htm
        我在php学习在使用到最多的数据合并方法就是array_merge、array_merge_recursive函数了,当然还会少用到操作符(+)函数了,下面我来给大家整理一下这几个函数的一些用法。

    PHP中,有3种方法来进行数组合并:操作符(+)、array_merge、array_merge_recursive,其中前两种方式为一维数组的合并,第三种为递归合并。
    在说PHP的数组合并之前,先要明白,PHP的数组分为索引数组和关联数组。索引数组是指没有键值和键值为数字的数组,关联数组是指键值为字符的数组。

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

    一、“+”运算符
    规则:
      当两个数组的键名是数字键名或者字符串键名
      $c = $a + $b
      在$a后追加($b在$a中不存在的键名)键名和值
    注意:
      1、不覆盖,只是追加不存在的键名和对应的值
      2、键名不重新索引
      3、无论是全部数字键名还是混合,都只是追加键名和值,如果键名相同则不进行追加,即把最先出现的值作为最终结果返回
    例1:数字键名:

     

    [php] view plain copy
     
    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"  
    14. }  
    15.   
    16.   
    17. 例2:数字键名  
    18. $a = array(  
    19.     66=>'a',  
    20. );  
    21. $b = array(  
    22.     60=>'u',  
    23.     66=>'c'  
    24. );  
    25. $c = $a + $b;  
    26. var_dump($c);  
    27.    
    28. output:  
    29. array(2) {  
    30.   [66]=>  
    31.   string(1) "a"  
    32.   [60]=>  
    33.   string(1) "u"  
    34. }  
    35.   
    36.   
    37. 例3:字符键名  
    38. <?php   
    39. $a = array(  
    40.     1=>'a',  
    41.     2=>'b',  
    42.     'c'=>'c',  
    43.     'd'=>'d',  
    44. );  
    45. $b = array(  
    46.     1=>'u',  
    47.     3=>'v',  
    48.     'c'=>'w',  
    49.     'd'=>'x',  
    50.     'y'=>'y',  
    51.     60=>'z',  
    52. );  
    53. $c = $a + $b;  
    54. var_dump($c);  
    55. ?>  
    56.   
    57. output:  
    58. array(7) {  
    59.   [1]=>  
    60.   string(1) "a"  
    61.   [2]=>  
    62.   string(1) "b"  
    63.   ["c"]=>  
    64.   string(1) "c"  
    65.   ["d"]=>  
    66.   string(1) "d"  
    67.   [3]=>  
    68.   string(1) "v"  
    69.   ["y"]=>  
    70.   string(1) "y"  
    71.   [60]=>  
    72.   string(1) "z"  
    73. }  

     

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

    例:

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


    array_merge() 将一个或多个PHP数组合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
    如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
    如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

     

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

    例:

    [php] view plain copy
     
      1. $a = array(  
      2.     1=>'a',  
      3.     2=>'b',  
      4.     'c'=>'c',  
      5.     'd'=>'d',  
      6. );  
      7.   
      8. $b = array(  
      9.     1=>'u',  
      10.     3=>'v',  
      11.     'c'=>'w',  
      12.     'd'=>'x',  
      13.     'y'=>'y',  
      14.     60=>'z',  
      15. );  
      16.   
      17. var_dump(array_merge_recursive($a,$b));  
      18.   
      19. 输出:  
      20. array (size=8)  
      21.   0 => string 'a' (length=1)  
      22.   1 => string 'b' (length=1)  
      23.   'c' =>  
      24.     array (size=2)  
      25.       0 => string 'c' (length=1)  
      26.       1 => string 'w' (length=1)  
      27.   'd' =>  
      28.     array (size=2)  
      29.       0 => string 'd' (length=1)  
      30.       1 => string 'x' (length=1)  
      31.   2 => string 'u' (length=1)  
      32.   3 => string 'v' (length=1)  
      33.   'y' => string 'y' (length=1)  
      34.   4 => string 'z' (length=1)  
  • 相关阅读:
    dp有哪些种类
    hibernate 双向n-n
    TextView——setCompoundDrawables说明
    Codeforces Round #FF (Div. 2)
    波折yosemite下载过程
    谁,例如下列方法区的指导下
    [LeetCode] 032. Longest Valid Parentheses (Hard) (C++)
    TCP/IP的经典网络编程
    NYOJ353 3D dungeon 【BFS】
    Ubuntu 14.04 grub2 温馨提示
  • 原文地址:https://www.cnblogs.com/hehexu/p/8471204.html
Copyright © 2020-2023  润新知