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 相关文章推荐
PHP4实际应用经验篇(4)
Oct 09 PHP
PHP实现多服务器session共享之NFS共享的方法
Mar 16 PHP
PHP 上传文件大小限制
Jul 05 PHP
如何使用FireFox插件FirePHP调试PHP
Jul 23 PHP
关于js和php对url编码的处理方法
Mar 04 PHP
php中return的用法实例分析
Feb 28 PHP
php创建多级目录的方法
Mar 24 PHP
php筛选不存在的图片资源
Apr 28 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
Nov 19 PHP
php实现爬取和分析知乎用户数据
Jan 26 PHP
PHP扩展框架之Yaf框架的安装与使用
May 18 PHP
laravel 获取某个查询的查询SQL语句方法
Oct 12 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获取文章上一页与下一页的方法
2014/12/01 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
Canvas放置反弹效果随机图形(实例)
2017/08/17 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
React Native之TextInput组件解析示例
2017/08/22 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
详解js的作用域、预解析机制
2018/02/05 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
关于element-ui表单中限制输入纯数字的解决方式
2020/09/08 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
使用django的ORM框架按月统计近一年内的数据方法
2019/07/18 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
关于HTML5语义标签的实践(blog页面)
2016/07/12 HTML / CSS
Fresh馥蕾诗英国官网:法国LVMH集团旗下高端天然护肤品牌
2018/11/01 全球购物
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
交通安全寄语大全
2014/04/08 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server
MySQL数据库必备之条件查询语句
2021/10/15 MySQL
单机多实例部署 MySQL8.0.20
2022/05/15 MySQL