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将fileterms函数返回的结果变成可读的形式
Apr 21 PHP
php 批量替换程序的具体实现代码
Oct 04 PHP
php实现RSA加密类实例
Mar 26 PHP
php session的锁和并发
Jan 22 PHP
PHP网站自动化配置的实现方法(必看)
May 27 PHP
PHP手机号中间四位用星号*代替显示的实例
Jun 02 PHP
PHP中关键字interface和implements详解
Jun 14 PHP
PHP实现动态删除XML数据的方法示例
Mar 30 PHP
PHP whois查询类定义与用法示例
Apr 03 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
Oct 16 PHP
PHP实现爬虫爬取图片代码实例
Mar 03 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
构建简单的Webmail系统
2006/10/09 PHP
PHP 函数执行效率的小比较
2010/10/17 PHP
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
bootstrap日期插件daterangepicker使用详解
2017/10/19 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
2019/05/09 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
python WindowsError的错误代码详解
2017/07/23 Python
python使用RNN实现文本分类
2018/05/24 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
详解python中的模块及包导入
2019/08/30 Python
python实现简易学生信息管理系统
2020/04/05 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
Parfume Klik丹麦:香水网上商店
2018/07/10 全球购物
实习协议书范本
2014/09/25 职场文书
医院护士工作检讨书
2014/10/26 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技