PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的!

主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意

1)键名为数字时,array_merge()后面的值将不会覆盖原来的值,而是附加到后面,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖)

2)键名为字符串时,array_merge()此时会覆盖掉前面相同键名的值,但+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖)。

需要注意的是数组键形式 '数字' 等价于 数字

$a = array('a', 'b');
$b = array('c', 'd');
$c = $a + $b;
var_dump($a);
var_dump(array_merge($a, $b));//输出:array0 => string 'a' (length=1)1 => string 'b' (length=1)array0 => string 'a' (length=1)1 => string 'b' (length=1)2 => string 'c' (length=1)3 => string 'd' (length=1)++++++++++++++++++++++++++++++++++++++++++  $a = array(0 => 'a',1 => 'b'
);
$b = array(0 => 'c',1 => 'b'
);
$c = $a + $b;
var_dump($c);
var_dump(array_merge($a, $b));//输出:array0 => string 'a' (length=1)1 => string 'b' (length=1)array0 => string 'a' (length=1)1 => string 'b' (length=1)2 => string 'c' (length=1)3 => string 'b' (length=1)++++++++++++++++++++++++++++++++++++++++++  $a = array('a', 'b');
$b = array('0' => 'c',1 => 'b'
);
$c = $a + $b;
var_dump($c);
var_dump(array_merge($a, $b));//输出:
array0 => string 'a' (length=1)1 => string 'b' (length=1)array0 => string 'a' (length=1)1 => string 'b' (length=1)2 => string 'c' (length=1)3 => string 'b' (length=1)++++++++++++++++++++++++++++++++++++++++++ $a = array(0 => 'a',1 => 'b'
);
$b = array('0' => 'c','1' => 'b'
);
$c = $a + $b;
var_dump($c);
var_dump(array_merge($a, $b));输出:array0 => string 'a' (length=1)1 => string 'b' (length=1)array0 => string 'a' (length=1)1 => string 'b' (length=1)2 => string 'c' (length=1)3 => string 'b' (length=1)

对多个数组合并去重技巧

$a = array('1001','1002');
$b = array('1002','1003','1004');
$c = array('1003','1004','1005');
$d = count(array_flip($a) + array_flip($b) + array_flip($c));

延伸阅读:

PHP合并2个数字键数组的值

PHP数组合并+与array_merge的区别分析 对多个数组合并去重技巧相关推荐

  1. php数组拆分的函数是,php基础之数组的合并、拆分、区别取值函数集

    PHP数组的合并.拆分.区别取值函数集 都说PHP的数组功能很强大.只有真正用于项目工作当中才能够感受得到,至少我认为是,现在已慢慢的发觉其中的奥秘了-- 合并数组有三个函数: 1.array_com ...

  2. 从编译器角度分析C语言中数组名和指针的区别

    从编译器角度分析C语言中数组名和指针的区别 数组名和指针是两个往往很容易让人们混淆的概念,很多人以为数组名就是一个指针,也有很多人知道数组名不同于指针但是仅知道数组名的值不能像指针一样改变. 例如你可 ...

  3. php如何把两个array相加_php两个数组相加_PHP数组合并之array_merge和数组相加

    摘要 腾兴网为您分享:PHP数组合并之array_merge和数组相加,万师傅,腾讯qq,时光机器,轻微课等软件知识,以及东莞市教育局,kkg黄金商城,mp3cutter,91算命,医疗,一爱,qq拼 ...

  4. PHP array合并,PHP array_merge():数组合并

    PHP array_merge() 函数用来将多个数组合并为一个,其语法如下: array array_merge ( array $arr1 [, array $arr2, array $arr3 ...

  5. iOS开发:不可变数组和可变数组的区别分析(NSArray / NSMutableArray)

    本篇博文分享一个理论知识点,Object-C中可变数组和不可变数组的对比使用,知识比较简单基础,大牛可以忽略.在iOS开发中,一般经常用NSArray类和NSMutableArray类来表示数组,其中 ...

  6. C++中关于[]静态数组和new分配的动态数组的区别分析

    一.静态数据及动态数组的创建 静态数据: int a[10]: int a[]={1,2,3}; 数组的长度必须为常量. 动态数组: int len; int *a=new int [len]; de ...

  7. c语言中 char怎样用,C语言中char*和char[]用法区别分析

    C语言中char*和char[]用法区别分析 本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很 ...

  8. php n维数组扁平化,js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解...

    数组的扁平化:将多维数组变成一维数组 对于一个像这样的嵌套数组:a=[1,[2,[3,4]],5,6]我们想要把它变成一个一维数组,有下面几种方法: 方法一:递归一 function parseArr ...

  9. 【Android 插件化】Hook 插件化框架 ( 合并 “插件包“ 与 “宿主“ 中的 Element[] dexElements | 设置合并后的 Element[] 数组 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

最新文章

  1. Lambda 表达式基础理论与示例
  2. Azure自动化部署运维浅谈
  3. Kotlin中的接口回调
  4. win10+ubuntu双系统下,ubuntu不能访问windows的磁盘分区
  5. Java项目构建基础的三个统一,太厉害了!
  6. C、C++ 宽字符WCString转为char*
  7. linux c之出现warning: implicit declaration of function ‘exit’ [-Wimplicit-function-declaration]这个问题
  8. weblogic hibernate HqlToken
  9. 我用MRS-ClickHouse构建的用户画像系统,让老板拍手称赞
  10. mongodb java 地理位置_MongoDB的地理位置索引
  11. Duplicate File Finder pro如何查找删除相似照片
  12. Java反编译插件Jdclipse导致Eclipse 3.7.2启动崩溃的解决方法
  13. 想要下载,却没有积分,CSDN你做个人吧
  14. IIS7下DataFormatString={0:c}人民币符号为?的问题
  15. 浏览器的窗口大小被改变时触发的事件window.onresize
  16. 雨林木风发布 Windows一键还原 2011 v1.5.5.6
  17. EE308_lab1-2
  18. Linux找回用户密码
  19. 计算机房灭火房间用的系数,01-机房七氟丙烷气体灭火用量设计计算(1页)-原创力文档...
  20. opencv光线补偿_精准光线曝光补偿和包围曝光的运用

热门文章

  1. 奥松机器人PHP,Arduino四位七段数码管 LED数码管 4位共阳数码管 显示屏模块
  2. 华为nova7se能云闪付吗_华为迎来转机!联发科“顶替”麒麟芯片,已售罄手机将重获新生...
  3. PAT乙级 1086 就不告诉你 (附测试点1,2排查及用例)
  4. 两个有序链表序列的合并
  5. 02、MySQL—数据库基本操作
  6. [Web]Restful风格的适用场景
  7. 微信小程序之可滚动视图 scroll-view 的使用注意
  8. JavaScript笔记整理
  9. UVa 11998 破碎的键盘(数组实现链表)
  10. 记conda 安装geopandas遇到的一个小错误