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 heredoc和phpwind的模板技术使用方法小结
Mar 28 PHP
PHP 程序员应该使用的10个组件
Oct 31 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
Jun 24 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
PHP中判断变量为空的几种方法分享
Aug 26 PHP
PHP IE中下载附件问题解决方法
Jan 07 PHP
smarty模板引擎中变量及变量修饰器用法实例
Jan 22 PHP
PHP数组和explode函数示例总结
May 08 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
Jul 07 PHP
php及codeigniter使用session-cookie的方法(详解)
Apr 06 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PHP保留两位小数的几种方法
Jul 24 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
curl实现站外采集的方法和技巧
2014/01/31 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
javascript 函数调用规则
2009/08/26 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
javascript的几种写法总结
2016/09/30 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&”)
2016/12/23 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
深入理解python函数递归和生成器
2016/06/06 Python
python中的计时器timeit的使用方法
2017/10/20 Python
python读取txt文件并取其某一列数据的示例
2019/02/19 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
HTML5 canvas基本绘图之绘制线条
2016/06/27 HTML / CSS
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
毕业生的自我评价
2013/12/30 职场文书
演讲稿格式
2014/04/30 职场文书
优秀教师演讲稿
2014/05/06 职场文书
小学家长通知书评语
2014/12/31 职场文书
保留意见审计报告
2015/06/05 职场文书
如何理解PHP核心特性命名空间
2021/05/28 PHP
python机器学习创建基于规则聊天机器人过程示例详解
2021/11/02 Python