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 相关文章推荐
实例(Smarty+FCKeditor新闻系统)
Jan 02 PHP
php miniBB中文乱码问题解决方法
Nov 25 PHP
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
Jun 08 PHP
php操作mysqli(示例代码)
Oct 28 PHP
PHP制作百度词典查词采集器
Jan 29 PHP
PHP文件操作方法汇总
Jul 01 PHP
php计算税后工资的方法
Jul 28 PHP
php使用timthumb生成缩略图的方法
Jan 22 PHP
PHP邮件群发机实现代码
Feb 16 PHP
浅谈PHP值mysql操作类
Jun 29 PHP
PHP请求远程地址设置超时时间的解决方法
Oct 29 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 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三元运算符的结合性介绍
2012/01/10 PHP
PHP中error_log()函数的使用方法
2015/01/20 PHP
PHP+MySQL删除操作实例
2015/01/21 PHP
window.location.hash 属性使用说明
2010/03/20 Javascript
JavaScript EasyPager 分页函数
2011/05/25 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
js中less常用的方法小结
2017/08/09 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
JavaScript变量声明var,let.const及区别浅析
2018/04/23 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
Python读写docx文件的方法
2018/05/08 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
Python中if有多个条件处理方法
2020/02/26 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
基于python实现操作git过程代码解析
2020/07/27 Python
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
为奢侈时尚带来了慈善元素:Olivela
2018/09/29 全球购物
Android笔试题总结
2014/11/29 面试题
美丽家庭事迹材料
2014/05/03 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
教师自我剖析材料
2014/09/29 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
思想道德自我评价2015
2015/03/09 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL