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 相关文章推荐
多文件上传的例子
Oct 09 PHP
PHP脚本的10个技巧(3)
Oct 09 PHP
一个数据采集类
Feb 14 PHP
php重定向的三种方法分享
Feb 22 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
Apr 24 PHP
php foreach正序倒序输出示例代码
Jul 01 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
Oct 15 PHP
基于PHP技术开发客服工单系统
Jan 06 PHP
Yii安装与使用Excel扩展的方法
Jul 13 PHP
php7 安装yar 生成docker镜像
May 09 PHP
PHP支付宝当面付2.0代码
Dec 21 PHP
php实现网页上一页下一页翻页过程详解
Jun 28 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 生成WML页面方法详解
2009/08/09 PHP
PHP实现ftp上传文件示例
2014/08/21 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
PHP经典面试题集锦
2015/03/19 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
图解js图片轮播效果
2015/12/20 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
AngularJS的ng-click传参的方法
2017/06/19 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
Python标准库之循环器(itertools)介绍
2014/11/25 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
美国轮胎网站:Priority Tire
2018/11/28 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
2013/03/30 面试题
毕业生自我鉴定实例
2014/01/21 职场文书
合作意向书模板
2014/03/31 职场文书
转让协议书范本
2014/04/15 职场文书
离婚协议书范文2016
2016/03/18 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫