当前位置: 首页 > news >正文

php arraymerge 去重,PHP数组合并+与array_merge的区别分析 对多个数组合并去重技巧...

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));

//输出:

array

0 => string 'a' (length=1)

1 => string 'b' (length=1)

array

0 => 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));

//输出:

array

0 => string 'a' (length=1)

1 => string 'b' (length=1)

array

0 => 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));

//输出:

array

0 => string 'a' (length=1)

1 => string 'b' (length=1)

array

0 => 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));

输出:

array

0 => string 'a' (length=1)

1 => string 'b' (length=1)

array

0 => 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));

延伸阅读:

相关文章:

  • oracle多个实例查看,oracle一个实例多个数据库-oracle显示所有数据库-oracle数据库基本介绍...
  • oracle gc 部署,生产环境 CPU 高,定位发现是 oracle jdk7.79 的 GC 导致,只是很奇怪是 SYS 高, USR 不高...
  • oracle null 赋值,java和oracle 中NULL的使用
  • lisp如何调用linux头文件,用lisp开发博客客户端
  • linux 查看服务器任务,细说linux学习--服务器系统查看以及定时任务
  • linux隔离内核使用某些CPU,isolcpu参数 隔离cpu使其不被自动调度(linux 修改boot参数)...
  • linux路径信息,linux 底层 基础命令 路径信息
  • Linux基础信息,Linux基础(用户信息)
  • 在linux下安装mongo数据库,Linux系统下安装MongoDB
  • linux5编辑文本,linux 学习5 文本编辑器 vim
  • c语言数字类型转字符类型,C语言的基本数据类型及数据类型转换
  • 李含光c语言程序设计教程百度云,C语言程序设计教程 李含光 郑关胜 清华大学出版社习题答案...
  • 个人密码管理程序c语言,密码管理系统C语言(8页)-原创力文档
  • c语言程序设计数字电位器,可编程数字电位器在AVR单片机中的应用
  • 编程语言与c语言转换,【转】一些变态的编程语言
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JS学习笔记——闭包
  • learning koa2.x
  • mysql外键的使用
  • python学习笔记-类对象的信息
  • SpringBoot几种定时任务的实现方式
  • vue-router 实现分析
  • 工作中总结前端开发流程--vue项目
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 检测对象或数组
  • 利用DataURL技术在网页上显示图片
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 《码出高效》学习笔记与书中错误记录
  • 选择阿里云数据库HBase版十大理由
  • ![CDATA[ ]] 是什么东东
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (30)数组元素和与数字和的绝对差
  • (LeetCode) T14. Longest Common Prefix
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (分布式缓存)Redis持久化
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (算法二)滑动窗口
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Scala的“=”符号简介
  • (转)程序员技术练级攻略
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET Micro Framework初体验(二)
  • .NET 反射 Reflect
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .net(C#)中String.Format如何使用
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET连接MongoDB数据库实例教程
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构