老生常谈PHP数组函数array_merge(必看篇)


Posted in PHP onMay 25, 2017

很久之前就用到过这个函数,只不不过是简单的用用而已并没有做太深入的研究

今天在翻阅别人博客时看到了对array_merge的一些使用心得,故此自己来进行一次总结。

 

array_merge是将一个或者多个数组进行合并。

这个函数多用于在从数据库中取出的结果集的合并操作。

参数配置也很简单array_merge(arr1,arr2,arrN)

注意此处的参数必须为数组,否则会报错。

虽然,看起来很简单,但是其中也有不少的坑。

我们将从单数组和多数组的方向来进行分析。

 

1、多个数组进行合并操作(自定义键名):

从下面的运行结果可以看出$arr1与$arr2中键名相同的数据已被覆盖。

后面的数组会将前面数组中键相同的值覆盖。

<?php

$arr1 = array('a'=>'1','b'=>'2');
$arr2 = array('a'=>'1','b'=>'3','c'=>'2');

$ret = array_merge($arr1,$arr2);
print_r($ret);



//run result
Array
(
  [a] => 1
  [b] => 3
  [c] => 2
)

2.多个数组进行合并操作(自定义数字键名):

如果数组中的键名为数字时,会格式化键名并保留所有键值。

<?php

$arr1 = array(1=>'1',2=>'2');
$arr2 = array(1=>'1',2=>'3',6=>'2');

$ret = array_merge($arr1,$arr2);
print_r($ret);




//run result

Array
(
  [0] => 1
  [1] => 2
  [2] => 1
  [3] => 3
  [4] => 2
)

3.多个数组进行合并操作(无输入键名):

<?php

$arr1 = array(1,2);
$arr2 = array(1,2,6);

$ret = array_merge($arr1,$arr2);
print_r($ret);



//run result
Array
(
  [0] => 1
  [1] => 2
  [2] => 1
  [3] => 2
  [4] => 6
)

4.多数在合并操作(当一个数组为空时):

一个数组为空的这种操作很常见,无论哪个数组为空都会显示现有的值。

<?php

$arr1 = array();
$arr2 = array(1,2,6);

$ret = array_merge($arr1,$arr2);
print_r($ret);


//run result
Array
(
  [0] => 1
  [1] => 2
  [2] => 6
)

5.单数组操作:

单数组这种情况一般不会用到array_merge(),因为这个函数是用来合并数组的。

但是如果想恢复到原始的相关键名可以使用这个函数,但并不建议这么做。

因为有比它更好的函数可以使用array_values()

单数组操作其实和上面的2、3两种情况很类似,当键名为数字时则会格式化键名,否则直接显示。

<?php

$arr1 = array(1=>1,3=>2,6=>6);

$ret = array_merge($arr1);
print_r($ret);


//run result
Array
(
  [0] => 1
  [1] => 2
  [2] => 6
)

6.当遇到两个数组合并的时候可以使用array_merge(),后面的数组会与前面的数组进行合并

但是想用前面的数组与后面的数组进行合并时怎么办?

难道把array_merge()中的两个数组换一下位置吗?其实有一个更简单的方法。

就是使用“+”来完成操作。

<?php
$arr1 = array('a'=>1,'b'=>2);
$arr2 = array('a'=>1,'b'=>3,'c'=>6);

$ret = $arr1+$arr2;
print_r($ret);



//run result
Array
(
  [a] => 1
  [b] => 2
  [c] => 6
)

以上这篇老生常谈PHP数组函数array_merge(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP 在线翻译函数代码
May 07 PHP
apache配置虚拟主机的方法详解
Jun 17 PHP
解析csv数据导入mysql的方法
Jul 01 PHP
md5 16位二进制与32位字符串相互转换示例
Dec 30 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
Jun 20 PHP
php实现递归抓取网页类实例
Apr 03 PHP
php提交过来的数据生成为txt文件
Apr 28 PHP
thinkphp项目如何自定义微信分享描述内容
Feb 20 PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
May 15 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
Apr 10 PHP
Yii框架实现多数据库配置和操作的方法
May 25 #PHP
Yii框架扩展CGridView增加导出CSV功能的方法
May 24 #PHP
[原创]php正则删除html代码中class样式属性的方法
May 24 #PHP
PHP 年月日的三级联动实例代码
May 24 #PHP
php验证码生成器
May 24 #PHP
php批量修改表结构实例
May 24 #PHP
php 人员权限管理(RBAC)实例(推荐)
May 24 #PHP
You might like
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
JQuery插件开发示例代码
2013/11/06 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
Node.js程序中的本地文件操作用法小结
2016/03/06 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
JS如何设置元素样式的方法示例
2017/08/28 Javascript
vue-cli开发时,关于ajax跨域的解决方法(推荐)
2018/02/03 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
jquery实现动态添加附件功能
2018/10/23 jQuery
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
Python遍历numpy数组的实例
2018/04/04 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
毕业生动漫设计求职信
2013/10/11 职场文书
优秀少先队工作者事迹材料
2014/05/13 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
毕业设计答辩开场白
2015/05/29 职场文书
天堂的孩子观后感
2015/06/11 职场文书
2019教师的学习计划
2019/06/25 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
Nginx配置https的实现
2021/11/27 Servers
实例详解Python的进程,线程和协程
2022/03/13 Python