PHP合并数组的2种方法小结


Posted in PHP onNovember 24, 2016

前言

在此前合并数组我一直用的是array_merge()这个函数,但最近我在换工作的时候遇到一道合并数组的面试题,我当时想的是将两个数组先转化为字符串,合并后再转化为数组输出,面试官说这个思路不太对,完了bulabula讲了一下数组基础的东西,然后确实是因为经验问题,或者是代码写太少,想不到还有什么方法,今天我百度了一下,原来还有‘+'号,

array_merge_recursive() ,也是可以用来合并数组的,根据我的记忆,我把那道题写出来看一下:

$a = array('color'=>'red',5,6); 
$b = array('color'=>'blue','type'=>'fruit',6,7); 
$arr = array_merge($a,$b); 
var_dump($arr);
array (size=6)
 'color' => string 'blue' (length=4)
 0 => int 5
 1 => int 6
 'type' => string 'fruit' (length=5)
 2 => int 6
 3 => int 7

要求是在不使用array_merge()的情况的得到相同的效果;

array_merge()合并数组会把前一个数组中关联形式数组的键值相同的覆盖,索引形式的则按键值顺序合并在一起)

1.先用array_merge_recursive()函数来合并一下:

$a = array('color'=>'red',5,6);
$b = array('color'=>'blue','type'=>'fruit',6,7);
$arr = array_merge_recursive($a,$b);
var_dump($arr);

输出结果:

array (size=6)
 'color' => 
 array (size=2)
  0 => string 'red' (length=3)
  1 => string 'blue' (length=4)
 0 => int 5
 1 => int 6
 'type' => string 'fruit' (length=5)
 2 => int 6
 3 => int 7

从结果可以看出array_merge_recursive()函数会把键值相同的值以一个新的关联数组的形式返回,并以这个键值作为二维数组的键值,其他索引形式则不会受影响。

比起array_merge()的话就不会出现后面的数组键和前一个相同就把前一个的值覆盖的情况了。

2.再看下‘+'号合并数组的情况:

$a = array('color'=>'red',5,6);
$b = array('color'=>'blue','type'=>'fruit',6,7);
$arr = $a+$b;
var_dump($arr);

输出结果:

array (size=4)
 'color' => string 'red' (length=3)
 0 => int 5
 1 => int 6
 'type' => string 'fruit' (length=5)

从这个结果可以看出,使用‘+'号合并数组,是前面覆盖后面的,和array_merge()相反,而且它比array_merge()更狠,如果以索引形式出现的数组的内容,合并后如果键值相同也会覆盖掉!

总结

好了,以上就是这篇文章的全部内容了,是我个人的一些总结,本人入行不久,火候欠佳,如有总结不到位地方请各位高手批评指正,一定虚心接纳!

PHP 相关文章推荐
两种php调用Java对象的方法
Oct 09 PHP
php仿ZOL分页类代码
Oct 02 PHP
php输出xml格式字符串(用的这个)
Jul 12 PHP
用Simple Excel导出xls实现方法
Dec 06 PHP
浅析php header 跳转
Jun 17 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
Aug 07 PHP
使用PHP强制下载PDF文件示例
Jan 17 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
Feb 18 PHP
PHP防止注入攻击实例分析
Nov 03 PHP
PHP解压ZIP文件到指定文件夹的方法
Nov 17 PHP
tp5实现微信小程序多图片上传到服务器功能
Jul 16 PHP
Yii框架学习笔记之session与cookie简单操作示例
Apr 30 PHP
PHP magento后台无法登录问题解决方法
Nov 24 #PHP
微信 开发生成带参数的二维码的实例
Nov 23 #PHP
微信 getAccessToken方法详解及实例
Nov 23 #PHP
Yii核心验证器api详解
Nov 23 #PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
Nov 23 #PHP
php in_array() 检查数组中是否存在某个值详解
Nov 23 #PHP
php 数组处理函数extract详解及实例代码
Nov 23 #PHP
You might like
PHP 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
php生成txt文件标题及内容的方法
2014/01/16 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
2019/10/08 PHP
JavaScript中九种常用排序算法
2014/09/02 Javascript
jQuery Ajax()方法使用指南
2014/11/19 Javascript
根据配置文件加载js依赖模块
2014/12/29 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
ES6关于Promise的用法详解
2018/05/07 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
基于vue+echarts 数据可视化大屏展示的方法示例
2020/03/09 Javascript
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
python根据日期返回星期几的方法
2015/07/06 Python
Python调用Windows命令打印文件
2020/02/07 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
2020/03/11 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
python 日志模块logging的使用场景及示例
2021/01/04 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
销售演讲稿范文
2014/01/08 职场文书
学院党的群众路线教育实践活动整改方案
2014/10/04 职场文书
停车场管理制度范本
2015/08/05 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python