老生常谈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脚本数据库功能详解(上)
Oct 09 PHP
PHP中的函数嵌套层数限制分析
Jun 13 PHP
解析php下载远程图片函数 可伪造来路
Jun 25 PHP
php实现在线生成条形码示例分享(条形码生成器)
Dec 30 PHP
php动态生成函数示例
Mar 21 PHP
php实现微信公众平台账号自定义菜单类
Dec 02 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
php读取XML的常见方法实例总结
Apr 25 PHP
php使用imagecopymerge()函数创建半透明水印
Jan 25 PHP
php基于Redis消息队列实现的消息推送的方法
Nov 28 PHP
PHP PDOStatement::columnCount讲解
Jan 30 PHP
关于PHP5.6+版本“No input file specified”问题的解决
Dec 11 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
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
JavaScript中的闭包原理分析
2010/03/08 Javascript
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
2015/04/25 Python
python之PyMongo使用总结
2017/05/26 Python
基于Python的PIL库学习详解
2019/05/10 Python
如何利用python给图片添加半透明水印
2019/09/06 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
python实现双色球随机选号
2020/01/01 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
Python 去除字符串中指定字符串
2020/03/05 Python
python用Configobj模块读取配置文件
2020/09/26 Python
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
课堂教学改革实施方案
2014/03/17 职场文书
酒店管理专业自荐信
2014/05/23 职场文书
放假通知
2015/04/14 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
中国合伙人观后感
2015/06/02 职场文书
高中体育课教学反思
2016/02/16 职场文书
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android