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

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

今天在翻阅别人博客时看到了对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(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

时间: 2024-10-28 02:01:20

老生常谈PHP数组函数array_merge(必看篇)的相关文章

基于JavaScript Array数组方法(新手必看篇)_javascript技巧

Array类型是ECMAScript中最常用的引用类型.ECMAScript中的数据与其它大多数语言中的数组有着相当大的区别.虽然ECMAScript中的数据与其它语言中的数组一样都是数据的有序列表,但不同的是,ECMAScript数组中的每一项可以保存任何类型的数据,无论是数值.字符串或者是对象.同时,ECMAScript中的数组大小是可以动态调整的,即可以根据数据的添加自动增长以容纳新增的数据.下面总结一下JavaScript中数组常用的操作函数及用法. •创建数组 创建数组主要有构造函数和

js数组操作方法总结(必看篇)_javascript技巧

判断数值数组中各个数字出现的奇偶次数 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>数组操作</title> </head> <body> <script type="text/javascript"> var arr=[3,1,2,2,1,3,1

常用Javascript函数与原型功能收藏(必看篇)_javascript技巧

如下所示: // 重复字符串 String.prototype.repeat = function(n) { return new Array(n+1).join(this); } // 替换全部 String.prototype.replaceAll = function(str1, str2) { return this.replace(new RegExp(str1, "gm"), str2); } // 清除空格 String.prototype.trim = function

老生常谈php中传统验证与thinkphp框架(必看篇)

PHP(超文本预处理器)可用于小型网站的搭建,当用户需要注册登录是,需要与后台数据库进行匹配合格才能注册和登录,传统的方式步骤繁多,需要先连接数据库再用sql语句进行插入. <?php header("Content-type: text/html; charset=utf-8"); $conn =mysqli_connect("localhost","root",""); if (!$conn){ echo "

SQL中实现SPLIT函数几种方法总结(必看篇)_Mysql

例1 代码如下 create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10)) returns @temp table(a varchar(100)) --实现split功能 的函数 --date :2003-10-14 as begin declare @i int set @SourceSql=rtrim(ltrim(@SourceSql)) set @i=charindex(@StrSeprate,@Sou

浅谈linux下的一些常用函数的总结(必看篇)_Linux

1.exit()函数 exit(int n)  其实就是直接退出程序, 因为默认的标准程序入口为int main(int argc, char** argv),返回值是int型的. 一般在shell下面,运行一个程序,然后使用命令echo $?就能得到该程序的返回值,也就是退出值,在main()里面,你可以用return n,也能够直接用exit(n)来做.unix默认的习惯正确退出是返回0,错误返回非0. 重点:单独的进程是返回给操作系统的.如果是多进程,是返回给父进程的. 在父进程里面调用w

老生常谈PHP面向对象之命令模式(必看篇)

这个模式主要由 命令类.用户请求数据类.业务逻辑类.命令类工厂类及调用类构成,各个类的作用概括如下: 1.命令类:调用用户请求数据类和业务逻辑类: 2.用户请求数据类:获取用户请求数据及保存后台处理后返回的结果: 3.业务逻辑类:如以下的示例中验证用户登陆信息是否正确的功能等: 4.命令工厂类(我自己取的名字,哈哈):生成命令类的实例,这个类第一次看的时候我觉得有点屌,当然看了几遍了还是觉得很屌 :): 5.调用类:调用命令类,生成视图: 直接看代码: //命令类 abstract class

一个简单的php MVC留言本实例代码(必看篇)_php实例

摘要 标题上我把这个留言板叫最简单的,其实应该叫最简陋的,因为把全部注意力集中在MVC模式设计和实现上,所以UI方面几乎没有一点修饰. 这个小程序一共包含6个文件,其中index.php是程序入口.post.htm是留言表单.在lib文件夹里Model.View .Controller三个文件分别实现MVC,DataAccess是一个简单的数据库访问类.其实这个程序是国外的一个人写的. PHP代码: /** * 一个用来访问MySQL的类 * 仅仅实现演示所需的基本功能,没有容错等 * 代码未作

JavaScript中闭包之浅析解读(必看篇)_javascript技巧

JavaScript中的闭包真心是一个老生常谈的问题了,最近面试也是一直问到,我自己的表述能力又不能完全支撑起来,真是抓狂.在回来的路上,我突然想到了一个很简单的事情,其实我们在做项目时候,其实就经常用到闭包的,可是面试问的时候,回答又往往是我们经常搜到的答案,唉 不管是应付面试 还是真的想学点东西 ,我也用自己的理解跟大家分享一下,书面化就避免不了了的. 1.闭包是什么? 红宝书中曰:"是指有权访问另外一个函数作用域中的变量的函数." 简单的说,JavaScript允许使用内部函数-