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写出自己的BLOG系统 2
Apr 12 PHP
php输出表格的实现代码(修正版)
Dec 29 PHP
php array_walk() 数组函数
Jul 12 PHP
PHP register_shutdown_function函数的深入解析
Jun 03 PHP
PHP实现全角字符转为半角方法汇总
Jul 09 PHP
thinkPHP中分页用法实例分析
Dec 26 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 PHP
Symfony2函数用法实例分析
Mar 18 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
php生成条形码的图片的实例详解
Sep 13 PHP
浅谈php的TS和NTS的区别
Mar 13 PHP
php字符串倒叙
Apr 01 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中$_SERVER的详细参数与说明
2008/07/29 PHP
php discuz 主题表和回帖表的设计
2009/03/13 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
javascript中length属性的探索
2011/07/31 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
2014/04/08 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
浅析jQuery Ajax通用js封装
2016/06/22 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
js面向对象之实现淘宝放大镜
2020/01/15 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
2020/02/12 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
Express 配置HTML页面访问的实现
2020/11/01 Javascript
python递归计算N!的方法
2015/05/05 Python
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
django实现用户登陆功能详解
2017/12/11 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
python dict 相同key 合并value的实例
2019/01/21 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
python2与python3爬虫中get与post对比解析
2019/09/18 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
Django模型验证器介绍与源码分析
2020/09/08 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
Eyeko美国:屡获殊荣的睫毛膏、眼线笔和眉妆
2018/07/05 全球购物
自我评价的写作规则
2014/01/06 职场文书
九年级体育教学反思
2014/01/23 职场文书
总经理工作职责范文
2014/03/14 职场文书
名人传读书笔记
2015/06/26 职场文书
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android