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作的文本留言本的例子(五)
Oct 09 PHP
xajax写的留言本
Nov 25 PHP
PHP项目开发中最常用的自定义函数整理
Dec 02 PHP
分享php分页的功能模块
Jun 16 PHP
PHP经典面试题之设计模式(经常遇到)
Oct 15 PHP
微信自定义菜单的创建/查询/取消php示例代码
Aug 05 PHP
PHP类型约束用法示例
Sep 28 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
Jan 21 PHP
微信公众号OAuth2.0网页授权问题浅析
Jan 21 PHP
php实现页面纯静态的实例代码
Jun 21 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 04 PHP
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
Apr 16 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
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
解析thinkphp import 文件内容变量失效的问题
2013/06/20 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
2007/01/22 Javascript
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
JavaScript中继承的一些示例方法与属性参考
2010/08/07 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
JavaScript中获取时间的函数集
2016/08/16 Javascript
js模块加载方式浅析
2017/08/12 Javascript
浅谈Node Inspector 代理实现
2017/10/19 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
python实现创建新列表和新字典,并使元素及键值对全部变成小写
2019/01/15 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
最新茶叶店创业计划书
2014/01/14 职场文书
计算机专业毕业生自我鉴定
2014/01/16 职场文书
生物制药自我鉴定
2014/01/25 职场文书
普罗米修斯教学反思
2014/02/06 职场文书
制药工程专业职业生涯规划范文
2014/03/10 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
幼儿园保育员岗位职责
2014/04/13 职场文书
专项法律服务方案
2014/06/11 职场文书
校本教研活动总结
2014/07/01 职场文书
2015年团支部工作总结
2015/04/03 职场文书
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记
深入理解pytorch库的dockerfile
2022/06/10 Python