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 include,include_once,require,require_once
Sep 05 PHP
求PHP数组最大值,最小值的代码
Oct 31 PHP
深入PHP magic quotes的详解
Jun 17 PHP
Php无限级栏目分类读取的实现代码
Feb 19 PHP
PHP常用数组函数介绍
Jul 28 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
Jun 13 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
注释PHP和html混合代码的小技巧(分享)
Nov 03 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
Dec 05 PHP
CI框架(CodeIgniter)操作redis的方法详解
Jan 25 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
通过代码实例解析PHP session工作原理
Dec 11 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数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
window.name代替cookie的实现代码
2010/11/28 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
Element PageHeader页头的使用方法
2020/07/26 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
Django发送html邮件的方法
2015/05/26 Python
Python实现字典依据value排序
2016/02/24 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
2017/06/15 Python
Python实现学校管理系统
2018/01/11 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
python对Excel的读取的示例代码
2020/02/14 Python
python+requests接口自动化框架的实现
2020/08/31 Python
Python爬虫之App爬虫视频下载的实现
2020/12/08 Python
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
英国女性时尚品牌:Apricot
2018/12/04 全球购物
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
什么是封装
2013/03/26 面试题
文言文形式的学生求职信
2013/12/03 职场文书
《纸船和风筝》教学反思
2014/02/15 职场文书
软件部经理岗位职责范本
2014/02/25 职场文书
高中生的自我评价
2014/03/04 职场文书
经典团队口号
2014/06/06 职场文书
新闻传播专业求职信
2014/07/22 职场文书
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android
Linux7.6二进制安装Mysql8.0.27详细操作步骤
2021/11/27 MySQL
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android