原文: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. 文件查找:locate、find

    文件查找:在文件系统上查找符合条件的文件: locate, find 非实时查找(数据库查找):locate  //不是遍历系统文件,把当前系统目录下的所有文件抽取出来制作成一个索引(或者叫数据库), ...

  2. 01_Flume基本架构及原理

    Flume消息收集系统,在整个系统架构中的位置 Flume概况1) Apache软件基金会的顶级项目2)存在两个大的版本:Flume 0.9.x(Flume-OG,original generatio ...

  3. (转)Linux I/O 调度方法

    Linux I/O 调度方法 转自https://blog.csdn.net/theorytree/article/details/6259104 操作系统的调度有 CPU调度    CPU sche ...

  4. Struts2 文件下载(中文处理方法以及控制下载文件名称和扩展名)

    Struts2的框架提供了现成的文件下载方式,大大简化了开发下载功能的便利性.网上的例子有很多,我把一些大家普遍比较关注的点,集中一下,给出一个整体方案. 一般我们照着书本或者网上的列子写出了一个De ...

  5. [原][osg][osgEarth]osg::Matrix 父子节点的变化关系

    //osg::Matrix offsetmatrix 计算出子节点在父节点下的绝对坐标 //osg::Matrix offposition 用来计算当前节点相对父节点的位置 osg::Matrix o ...

  6. IntelliJ IDE 开发Java GUI 入门

    j主要对java 的GUI相关知识进行简单的介绍和总结,整个博客按照创建一个java GUI的顺序进行介绍,期间穿插讲解用到的java Swing的布局.控件等相关知识.本博客所进行的讲解及工程的创建 ...

  7. Codeforces 431C - k-Tree

    431C - k-Tree 思路:dp. dp[i][j][s] 如果s为1,表示第i层长度为j且至少包含一段>=d的距离的路径数 如果s为0,表示第i层长度为j且不包含一段>=d的距离的 ...

  8. LeetCode--104--二叉树的最大深度

    问题描述: 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null, ...

  9. 页面title改变浏览器兼容性问题

    前一阵子客户在界面上改了下小小的需求,需要点不同的文章title显示不同的模块名称(之前没有区分,统一叫新闻图片),很简单的一个需求但是测试的时候并没有注意到不兼容IE7和IE8.在客户那被尴尬的发现 ...

  10. csp公共钥匙盒

    1.公共钥匙盒 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥 ...