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 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
PHP 高手之路(三)
Oct 09 PHP
php iconv() : Detected an illegal character in input string
Dec 05 PHP
有关php运算符的知识大全
Nov 03 PHP
Yii实现多数据库主从读写分离的方法
Dec 29 PHP
Laravel 5框架学习之子视图和表单复用
Apr 09 PHP
PHP中substr函数字符串截取用法分析
Jan 07 PHP
Yii2数据库操作常用方法小结
May 04 PHP
php 浮点数比较方法详解
May 05 PHP
php调用云片网接口发送短信的实现方法
Oct 25 PHP
php微信开发之谷歌测距
Jun 14 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
Apr 06 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中操作memcached缓存进行增删改查数据的实现代码
2014/08/15 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
Nodejs异步回调之异常处理实例分析
2018/06/22 NodeJs
ES10 特性的完整指南小结
2019/03/04 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
vue-cli3.X快速创建项目的方法步骤
2019/11/14 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
使用python生成杨辉三角形的示例代码
2018/08/29 Python
Python 最强编辑器详细使用指南(PyCharm )
2019/09/16 Python
如何基于Python + requests实现发送HTTP请求
2020/01/13 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
毕业生求职简历中的自我评价
2013/10/18 职场文书
会议邀请函范文
2014/01/09 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
在职员工证明书
2014/09/19 职场文书
高校教师个人总结
2015/02/10 职场文书
文案策划岗位职责
2015/02/11 职场文书
Navicat连接MySQL错误描述分析
2021/06/02 MySQL
python获取字符串中的email
2022/03/31 Python