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中Session的概念
Oct 09 PHP
PHP4实际应用经验篇(4)
Oct 09 PHP
php5 pdo新改动加载注意事项
Sep 11 PHP
服务器变量 $_SERVER 的深入解析
Jul 02 PHP
ThinkPHP模板判断输出Empty标签用法详解
Jun 30 PHP
PHP把MSSQL数据导入到MYSQL的方法
Dec 27 PHP
从wamp到xampp的升级之路
Apr 08 PHP
phpcms手机内容页面添加上一篇和下一篇
Jun 05 PHP
浅谈php中urlencode与rawurlencode的区别
Sep 05 PHP
POST一个JSON格式的数据给Restful服务实例详解
Apr 07 PHP
PHP微信模板消息操作示例
Jun 29 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 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的urlencode()URL编码函数浅析
2011/08/09 PHP
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
Smarty模板简单配置与使用方法示例
2016/05/23 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
关于JavaScript的面向对象和继承有利新手学习
2013/01/11 Javascript
js中indexof的用法详细解析
2013/12/24 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
JavaScript实现cookie的写入、读取、删除功能
2015/11/05 Javascript
用JS实现图片轮播效果代码(一)
2016/06/26 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
js常见遍历操作小结
2019/06/06 Javascript
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
详解python字节码
2018/02/07 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
基于Python fminunc 的替代方法
2020/02/29 Python
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
什么是事务?为什么需要事务?
2012/01/09 面试题
客户代表实习人员自我鉴定
2013/09/27 职场文书
《花的勇气》教后反思
2014/02/12 职场文书
灰雀教学反思
2014/04/28 职场文书
入党推优材料
2014/06/02 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书
2014司机年终工作总结
2014/12/05 职场文书
2015年度内部审计工作总结
2015/05/20 职场文书
超级礼物观后感
2015/06/15 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
《圆的周长》教学反思
2016/02/17 职场文书