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安装全攻略:APACHE
Oct 09 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
Jun 19 PHP
php保存二进制原始数据为图片的程序代码
Oct 14 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
Nov 18 PHP
支持png透明图片的php生成缩略图类分享
Feb 08 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
Jul 25 PHP
php查询及多条件查询
Feb 26 PHP
PHP中error_reporting函数用法详细介绍
Jun 11 PHP
PHP array_reduce()函数的应用解析
Oct 28 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
Jul 03 PHP
PHP Primary script unknown 解决方法总结
Aug 22 PHP
PHP网页缓存技术优点及代码实例
Jul 29 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 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
微信公众平台开发(五) 天气预报功能开发
2016/12/03 PHP
php取出数组单个值的方法
2018/03/12 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
js抽奖实现随机抽奖代码效果
2013/12/02 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
2014/09/21 Javascript
js实现鼠标经过表格行变色的方法
2015/05/12 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
2015/08/26 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
jQuery实现简单聊天室
2020/02/08 jQuery
vue请求数据的三种方式
2020/03/04 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
python去除扩展名的实例讲解
2018/04/23 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
2019/08/12 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
python能做什么 python的含义
2019/10/12 Python
python3 实现调用串口功能
2019/12/26 Python
解决pytorch DataLoader num_workers出现的问题
2020/01/14 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
青春寄语大全
2014/04/09 职场文书
党员创先争优心得体会
2014/09/11 职场文书
实习协议书
2015/01/27 职场文书
爱国主义影片观后感
2015/06/18 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
深入理解Pytorch微调torchvision模型
2021/11/11 Python