常用的合并数组的方法有三种:array_merge()、array_merge_recursive()、+,下面一个一个介绍

array_merge()

此函数合并一个或多个数组,当输入的数组中有相同的字符串键名,则后一个会覆盖前一个。对于参数数组中数字索引的值会重新排序,不管数字索引相同还是不同。

代码如下:

  1. $arr1 = array('name' => 'tom', 123, 456);
  2. $arr2 = array('age' => 13, 'name' => 'peter', 'hello', 'world');
  3. $arr = array_merge($arr1, $arr2);
  4. var_dump($arr1);
  5. var_dump($arr2);
  6. var_dump($arr);

运行结果:

  1. array (size=3)
  2. 'name' => string 'tom' (length=3)
  3. 0 => int 123
  4. 1 => int 456
  5.  
  6. array (size=4)
  7. 'age' => int 13
  8. 'name' => string 'peter' (length=5)
  9. 0 => string 'hello' (length=5)
  10. 1 => string 'world' (length=5)
  11.  
  12. array (size=6)
  13. 'name' => string 'peter' (length=5)
  14. 0 => int 123
  15. 1 => int 456
  16. 'age' => int 13
  17. 2 => string 'hello' (length=5)
  18. 3 => string 'world' (length=5)

array_merge_recursive()

此函数会递归地合并一个或多个数组,当输入的数组中有相同的字符串键名时会合并到一个数组中,而不是覆盖。

代码如下:

  1. $arr1 = array('name' => 'tom', 123, 456);
  2. $arr2 = array('age' => 13, 'name' => 'peter', 'hello', 'world');
  3. $arr = array_merge_recursive($arr1, $arr2);
  4. var_dump($arr1);
  5. var_dump($arr2);
  6. var_dump($arr);

运行结果:

  1. array (size=3)
  2. 'name' => string 'tom' (length=3)
  3. 0 => int 123
  4. 1 => int 456
  5.  
  6. array (size=4)
  7. 'age' => int 13
  8. 'name' => string 'peter' (length=5)
  9. 0 => string 'hello' (length=5)
  10. 1 => string 'world' (length=5)
  11.  
  12. array (size=6)
  13. 'name' =>
  14. array (size=2)
  15. 0 => string 'tom' (length=3)
  16. 1 => string 'peter' (length=5)
  17. 0 => int 123
  18. 1 => int 456
  19. 'age' => int 13
  20. 2 => string 'hello' (length=5)
  21. 3 => string 'world' (length=5)

+

加号在合并数组时如果出现数组中有相同的字符串键名或者是相同的数字索引时都会进行前边的值覆盖后边的值。

代码如下:

  1. $arr1 = array('name' => 'tom', 123, 456);
  2. $arr2 = array('age' => 13, 'name' => 'peter', 'hello', 'world');
  3. $arr = $arr1 + $arr2;
  4. var_dump($arr1);
  5. var_dump($arr2);
  6. var_dump($arr);

运行结果:

  1. array (size=3)
  2. 'name' => string 'tom' (length=3)
  3. 0 => int 123
  4. 1 => int 456
  5.  
  6. array (size=4)
  7. 'age' => int 13
  8. 'name' => string 'peter' (length=5)
  9. 0 => string 'hello' (length=5)
  10. 1 => string 'world' (length=5)
  11.  
  12. array (size=4)
  13. 'name' => string 'tom' (length=3)
  14. 0 => int 123
  15. 1 => int 456
  16. 'age' => int 13

PHP合并数组的三种方法的分析与比较的更多相关文章

  1. php数组合并有哪三种方法

    php数组合并有哪三种方法 一.总结 一句话总结:array_merge():array_merge_recursive():‘+'号 $a = array('color'=>'red',5,6 ...

  2. (PASS)JAVA数组去重 三种方法 (不用集合)

    第一种方法(只学到数组的看): 定义一个新的数组长度和旧数组的长度一样,存储除去重复数据的旧数组的数据和0, package demo01; import java.sql.Array; import ...

  3. (六)C#中判断空字符串的三种方法性能分析

    三种方法分别是: string a=""; 1.if(a=="") 2.if(a==string.Empty) 3.if(a.Length==0) 三种方法是等 ...

  4. java合并数组的几种方法,stream流合并数组

    一.实例代码 package cc.ash; import org.apache.commons.lang3.ArrayUtils; import java.lang.reflect.Array; i ...

  5. 【Javascript】JS遍历数组的三种方法:map、forEach、filter

    前言 近一段时间,因为项目原因,会经常在前端对数组进行遍历.处理,JS自带的遍历方法有很多种,往往不加留意,就可能导致知识混乱的现象,并且其中还存在一些坑.前端时间在ediary中总结了js原生自带的 ...

  6. Java创建数组的三种方法

    ■ 第一种: int[] arr=new int[6]; arr[0] = 1; arr[1] = 2 arr[2] = 3; arr[3] = 4; arr[4] = 5; arr[5] = 6; ...

  7. JS合并数组的几种方法及优劣比较

    本文属于JavaScript的基础技能. 我们将学习结合/合并两个JS数组的各种常用方法,并比较各种方法的优缺点. 我们先来看看具体的场景: var q = [ 5, 5, 1, 9, 9, 6, 4 ...

  8. ZH奶酪:JavaScript清空数组的三种方法

    参考链接:http://snandy.iteye.com/blog/893955 方式1,length赋值为0 目前 Prototype中数组的 clear 方法和mootools库中数组的 empt ...

  9. JS创建数组的三种方法

    1     常规方式 创建数组并给数组元素赋值 var myCars = new Array(); myCars[0] = "Saab"; myCars[1] = "Vo ...

随机推荐

  1. android-async-http详解

    android-async-http开源项目可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来非常简单,关于android-async-http开源项目的介绍内容来自于官方:http://lo ...

  2. JAVA之旅(十五)——多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止

    JAVA之旅(十五)--多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止 我们接着多线程讲 一.生产者和消费者 什么是生产者和消费者?我们 ...

  3. (二)php的常量和变量

    [php在命令行下接收参数] 如果在命令行调试php,传入的参数通过$argv获取,注意其中包含了文件名这一个元素,数组中元素的个数通过$argc获取. [可变变量] 指的是变量的名称可变,变量的标识 ...

  4. PorterDuffXferMode不正确的真正原因PorterDuffXferMode深入试验)

    菜鸡wing遇敌PorterDuffXferMode,不料过于轻敌,应战吃力.随后与其大战三天三夜,三百余回合不分胜负.幸得 @咪咪控 相助,侥幸获胜. 关键字:PorterDuffXferMode ...

  5. 【翻译】Ext JS 5.0.1 中的新功能

    原文:What's New in Ext JS 5.0.1 今天,我们很高兴的宣布Ext JS 5.0.1发布了!此维护版本基于Sencha社区的反馈做了一些改进.下面让我们来了解一下这些改变. 可访 ...

  6. Ext JS 5初探(三)

    在上文提到了本地化文件的问题,然后在Ext JS 5的包里找了找,居然还没包含本地化包.我估计目前还不到考虑本地化的时候.在Sencha Touch中,是没有本地化包的,但是要让Ext JS也不包含本 ...

  7. 第十一章 图像之2D(1)SpriteBatch

    Android游戏开发群:290051794 Libgdx游戏开发框架交流群:261954621 作者:宋志辉  出处:http://blog.csdn.net/song19891121 本文版权归作 ...

  8. Sample Code for Qp_preq_pub.Price_request Api to Simulate an Ask for Promotion Modifier

    DECLARE p_line_tbl QP_PREQ_GRP.LINE_TBL_TYPE; p_qual_tbl QP_PREQ_GRP.QUAL_TBL_TYPE; p_line_attr_tbl ...

  9. 嵌入式C快速翻转一个任何类型的数的二进制位

    unsigned char reverse_bits(unsigned char value) { unsigned char answer , i ; answer = 0 ; for(i = 1 ...

  10. 安卓笔记--intent传值不更新问题

    今天在学习安卓的过程中,遇到一个问题,就是用intent进行多次传值的话, 他永远是第一次的值 后来发现,intent接收数据被写到了onCreat();方法中,这时候finish();到上一个Act ...