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学习教程之第1天
Jun 15 PHP
php auth_http类库进行身份效验
Mar 19 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
简单概括PHP的字符串中单引号与双引号的区别
May 07 PHP
php的socket编程详解
Nov 20 PHP
深入讲解PHP的对象注入(Object Injection)
Mar 01 PHP
PHP开发中csrf攻击的简单演示和防范
May 07 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
php实现微信企业付款到个人零钱功能
Oct 09 PHP
PHP微信网页授权的配置文件操作分析
May 29 PHP
laravel框架之数据库查出来的对象实现转化为数组
Oct 23 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中的实现trim函数代码
2007/03/19 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
chrome原生方法之数组
2011/11/30 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
微信小程序 冒泡事件原理解析
2019/09/27 Javascript
Vue-Cli项目优化操作的实现
2019/10/27 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
详解Python并发编程之创建多线程的几种方法
2019/08/23 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
python实现连续变量最优分箱详解--CART算法
2019/11/22 Python
Python while true实现爬虫定时任务
2020/06/08 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
J2EE面试题
2016/03/14 面试题
企业办公室主任岗位职责
2014/02/19 职场文书
便利店促销方案
2014/02/20 职场文书
第二课堂活动总结
2014/05/07 职场文书
董事长秘书工作职责
2014/06/10 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
工程部岗位职责
2015/02/10 职场文书
八一建军节主持词
2015/07/01 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python
利用Java连接Hadoop进行编程
2022/06/28 Java/Android