原文: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:数字键名:

  1. $a = array(
  2. 'a',
  3. );
  4. $b = array(
  5. 'u',
  6. );
  7. $c = $a + $b;
  8. var_dump($c);
  9. output:
  10. array(1) {
  11. [0]=>
  12. string(1) "a"
  13. }
  14. 例2:数字键名
  15. $a = array(
  16. 66=>'a',
  17. );
  18. $b = array(
  19. 60=>'u',
  20. 66=>'c'
  21. );
  22. $c = $a + $b;
  23. var_dump($c);
  24. output:
  25. array(2) {
  26. [66]=>
  27. string(1) "a"
  28. [60]=>
  29. string(1) "u"
  30. }
  31. 例3:字符键名
  32. <?php
  33. $a = array(
  34. 1=>'a',
  35. 2=>'b',
  36. 'c'=>'c',
  37. 'd'=>'d',
  38. );
  39. $b = array(
  40. 1=>'u',
  41. 3=>'v',
  42. 'c'=>'w',
  43. 'd'=>'x',
  44. 'y'=>'y',
  45. 60=>'z',
  46. );
  47. $c = $a + $b;
  48. var_dump($c);
  49. ?>
  50. output:
  51. array(7) {
  52. [1]=>
  53. string(1) "a"
  54. [2]=>
  55. string(1) "b"
  56. ["c"]=>
  57. string(1) "c"
  58. ["d"]=>
  59. string(1) "d"
  60. [3]=>
  61. string(1) "v"
  62. ["y"]=>
  63. string(1) "y"
  64. [60]=>
  65. string(1) "z"
  66. }

二、array_merge函数。当为关联数组时,合并相同字符键值的数组,操作符合并规则是前面的覆盖后面的,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数组合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

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

例:

    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. var_dump(array_merge_recursive($a,$b));
    16. 输出:
    17. array (size=8)
    18. 0 => string 'a' (length=1)
    19. 1 => string 'b' (length=1)
    20. 'c' =>
    21. array (size=2)
    22. 0 => string 'c' (length=1)
    23. 1 => string 'w' (length=1)
    24. 'd' =>
    25. array (size=2)
    26. 0 => string 'd' (length=1)
    27. 1 => string 'x' (length=1)
    28. 2 => string 'u' (length=1)
    29. 3 => string 'v' (length=1)
    30. 'y' => string 'y' (length=1)
    31. 4 => string 'z' (length=1)

array_merge、array_merge_recursive的更多相关文章

  1. PHP数组合并:[“+”运算符]、[array_merge]、[array_merge_recursive]区别

    1.“+”运算符规则: 当两个数组的键名是数字键名或者字符串键名 $c = $a + $b 在$a后追加($b在$a中不存在的键名)键名和值注意: 1.不覆盖,只是追加不存在的键名和对应的值 2.键名 ...

  2. php中的常用数组函数(七) 数组合并 array_merge()和array_merge_recursive()

    $arr1 = array(1, 2, 3, 4, 'color'=>'red'); $arr2 = array('a', 'b', 'c', 'color'=>'blue'); prin ...

  3. 2016/3/20 数组定义 数组遍历 超全局数组 数组元素设置(in_array() 、array_reverse()、count()、array_unique()、unset()、array_values、array_merge、array_push) 列表实例

    一.数组定义 php数组与其他语言的数组的不同: 其他例如java语言 :同一种类型数据的集合. php:数组可以存储任何类型的数据.同一个数组中可以放int类型也可以放string类型 ①索引数组的 ...

  4. PHP数组操作汇总 php数组的使用技巧

    对于Web编程来说,最重要的就是存取和读写数据了.存储方式可能有很多种,可以是字符串.数组.文件的形式等.   数组,可以说是PHP的数据应用中较重要的一种方式.PHP的数组函数众多,下面是我学习的小 ...

  5. php数组使用技巧及操作总结

    数组,可以说是PHP的数据应用中较重要的一种方式.PHP的数组函数众多,下面是一些小结,借此记之,便于以后鉴之. 1. 数组定义 数组的定义使用 array()方式定义,可以定义空数组:<?ph ...

  6. PHP合并数组的三种方法的分析与比较

    常用的合并数组的方法有三种:array_merge().array_merge_recursive().+,下面一个一个介绍 array_merge() 此函数合并一个或多个数组,当输入的数组中有相同 ...

  7. php数组和部分操作函数

    1. 数组定义 数组的定义使用 array()方式定义,可以定义空数组: <?php $number = array(1,3,5,7,9); //定义空数组 $result = array(); ...

  8. PHP数组各种操作与函数汇总

    对于Web编程来说,最重要的就是存取和读写数据了.存储方式可能有很多种,可以是字符串.数组.文件的形式等.数组,可以说是PHP的数据应用中较重要的一种方式.PHP的数组函数众多,下面是我学习的小结,借 ...

  9. ThinkPHP执行原生sql,实现一些复杂的业务需求

    1)事情起因:写php的同事做了社区消息接口,主要返回几个方面的消息,如我的主贴的点赞.我的层帖的点赞.我的主贴的评论.我的评论的评论, 数据因为关联了5张以上的表,返回的格式不一: 如原来的thin ...

随机推荐

  1. Hadoop MapReduce编程 API入门系列之Crime数据分析(二十五)(未完)

    不多说,直接上代码. 一共12列,我们只需提取有用的列:第二列(犯罪类型).第四列(一周的哪一天).第五列(具体时间)和第七列(犯罪场所). 思路分析 基于项目的需求,我们通过以下几步完成: 1.首先 ...

  2. C++课程上 有关“指针” 的小结

    上完了C++的第二节课以后,觉得应该对这个内容进行一个小结,巩固知识点,并对我的心情进行了一个侧面烘托... 开始上课的老师: 正在上课的我: 上去敲代码的我: 过程是这样的: 下来的我: 非常的尴尬 ...

  3. HDU 2242 考研路茫茫——空调教室(边双连通分量+树形dp+重边标号)

    http://acm.hdu.edu.cn/showproblem.php?pid=2242 题意: 思路:首先求一下双连通分量,如果只有一个双连通分量,那么无论断哪根管子,图还是连通的. 最后只需要 ...

  4. hibernate报错 java.lang.StackOverflowError: null

    在使用hibernate时,报错 java.lang.StackOverflowError: null 把当前线程的栈打满了 java.lang.StackOverflowError: null at ...

  5. WPF基础学习笔记整理 (二) XAML

    基础知识: XAML:Extensible Application Markup Language, zammel: 用于实例化.NET对象的标记语言: XMAL使用树形逻辑结构描述UI: BAML: ...

  6. nginx 跨域解决

    server { listen 8811 default_server; root /opt/bp; # Make site accessible from http://localhost/ ser ...

  7. shell 加法计算

    Shell 相加目前发现有 3 种写法: 1. a=10 b=20 c=`expr ${a} + ${b}` echo "$c" 2. c=$[ `expr 10 + 20` ] ...

  8. 【Robot Framework 项目实战 02】SeleniumLibrary Web UI 自动化

    前言 SeleniumLibrary 是针对 Robot Framework 开发的 Selenium 库.它也 Robot Framework 下面最流程的库之一.主要用于编写 Web UI 自动化 ...

  9. Java成员变量和局部变量

    Java成员变量和局部变量 一.成员变量和局部变量 二.static关键字 三.成员变量和静态变量区别 四.main函数 五.静态函数什么时候用 六.静态代码块 七.构造代码块 构造代码块先于构造函数 ...

  10. H5表单基础知识(二)

    表单新增属性 <!--<input type="text" class="name" />--> <!-- placeholder ...