其实很多时候我都很疑惑为什么同维度的数组不能直接使用运算+直接进行相加,然后结果就是两个数组合并的在一起的新结果,这个就有点跟array_merge合并函数类似了,接下来就来看下这两种合并的方式到底有些什么样的区别?(下面采取对比的方式来看问题)

一、运算符+

# 第一种情况
$arr1 = array('a', 'b');
$arr2 = array('c', 'd');
var_dump($arr1 + $arr2);
//返回的结果:array('a', 'b') # 第二种情况
$arr1 = array('a', 'b');
$arr2 = array(=>'c', =>'d');
var_dump($arr1 + $arr2);
//返回的结果:array(0=>'a', 1=>'b', 3=>'c', 4=>'d')

说明:两个一维数组使用运算符+其实是可以相加的

1.两个数组相加,key值相同的元素结果显示前一个数组的值(注意不是咱们通常说的后边的值覆盖掉前边同key的值);键名相同,数组相加会将最先出现的值作为结果(不区分是否是数字key还是字符串的key);

2.存在key值不同的元素,这时候相加才会把不同key值对应的元素合并在一个新的数组内

二、array_merge

# 第一种情况
$arr1 = array('a', 'b');
$arr2 = array('c', 'd');
var_dump(array_merge($arr1, $arr2));
//返回的结果:array(0=>'a', 1=>'b', 2=>'c', 3=>'d') # 第二种情况
$arr1 = array('a', 'b');
$arr2 = array(3=>'c', 4=>'d');
var_dump(array_merge($arr1, $arr2));
//返回的结果:array(0=>'a', 1=>'b', 2=>'c', 3=>'d') # 第三种情况
$arr1 = array('a', 'b', 'name' => 'e');
$arr2 = array('name'=>'c', 4=>'d');
var_dump(array_merge($arr1, $arr2));
//返回的结果:array(0=>'a', 1=>'b', 'name'=>'c', 2=>'d')

说明:1.第一种情况说明同key的不会被覆盖,而是追加到先出现的值的后边,并且key是根据前边存在的key自增的

2.第二种情况说明只要不是字符串的key,合并后key都会重新的设置,也是根据前边存在的key自增

3.第三种情况说明如果存在字符串的key,字符串的key值相同的话,后边出现的值会覆盖掉前边出现的值

php array_merge和运算符+的更多相关文章

  1. Python基础0:变量 赋值 表达式和运算符

    变量: 前面我们在使用print()输出内容的时候,如果内容很长,后面要再次输出的时候,就需重新在输入一遍. 如果给输出的内容起个简单的别名.这样我们用简短的别名来代替长内容,下次要输出的时候就直接使 ...

  2. Javascript权威指南——第二章词法结构,第三章类型、值和变量,第四章表达式和运算符,第五章语句

    第二章 词法结构 一.HTML并不区分大小写(尽管XHTML区分大小写),而javascript区分大小写:在HTML中,这些标签和属性名可以使用大写也可以使用小写,而在javascript中必须小写 ...

  3. Shell编程基础教程2--变量和运算符

    2.变量和运算符 2.1.变量的类型 本地变量:环境变量:变量替换(显示变量):位置变量:标准变量:特殊变量: 2.2.本地变量 本地变量在用户现在的shell生命周期的脚本中使用 在命令行, LOC ...

  4. IOS开发新手教程(一)-数据类型和运算符

    OC语法入门(一) 数据类型和运算符 1.1凝视 凝视和其它语言一样,同意单行 ,多行凝视,一份规范的代码里面须要有一些正式的凝视,例如以下凝视: /* 这是多行 凝视 */ //这是多行凝视 OC语 ...

  5. 编写可维护的JavaScript—语句和表达式&变量、函数和运算符

    语句和表达式 所有的块语句都应当使用花括号.包括: if for while do…while… try…catch…finally //不好的写法 if (condition) doSomethin ...

  6. Javascript学习2 - Javascript中的表达式和运算符

    原文:Javascript学习2 - Javascript中的表达式和运算符 Javascript中的运算符与C/C++中的运算符相似,但有几处不同的地方,相对于C/C++,也增加了几个不同的运算符, ...

  7. JavaScript深入浅出补充——(一)数据类型,表达式和运算符

    项目基本做完,在进行下一阶段学习之前先看视频学习回顾一下JavaScript 一.数据类型 JavaScript中有五种原始类型和一种对象类型 JavaScript弱类型语言中隐式转换 num-0 字 ...

  8. Java 第二章 变量、数据类型和运算符

    第二章      变量.数据类型和运算符 什么是变量: 变量代表一块内存区域,变量类型不一样,这一块内存的大小也不一样. #在编程语言里面,你可以通过定义变量,向内存里添加数据或者修改内存已有的数据. ...

  9. C#图解教程 第八章 表达式和运算符

    表达式和运算符 表达式字面量 整数字面量实数字面量字符字面量字符串字面量 求值顺序 优先级结合性 简单算术运算符求余运算符关系比较运算符和相等比较运算符递增运算符和递减运算符条件逻辑运算符逻辑运算符移 ...

随机推荐

  1. centos6.5的软件安装,用户管理等

    1.软件的安装命令: 第一种:以 软件名.rpm 为结尾的二进制文件,这样的文件的安装 rpm -ivh 软件名.rpm i 是 install v 是校验 h 进度 卸载软件 是 rpm -e 软件 ...

  2. php如何定时执行任务

    PHP的实现决定了它没有Java和.Net这种AppServer的概念, 而http协议是一个无状态的协议, php只能被用户触发, 被调用, 调用后会自动退出内存, 没有常驻内存, 就没有办法准确的 ...

  3. Xcode/iOS: 如何判断代码运行在DEBUG还是RELEASE模式下?

    原帖链接:http://stackoverflow.com/a/9063469 首先确定下项目的 Build Settings 是否已经设置过宏定义 DEBUG,如何看呢? 点击 Build Sett ...

  4. strusts annotation

    也叫Zero Configuration(零配置),它省去了写xml文件的麻烦,可以直接在类叫进行配置,不用在java文件和xml文件中来回切换. 1.Action级的注解 @ParentPackag ...

  5. J2EE开发推荐工具

  6. Java精选笔记_IO流(字节流、InputStream、OutputStream、字节文件、缓冲区输入输出流)

    字节流 操作图片数据就要用到字节流. 字符流使用的是字符数组char[],字节流使用的是字节数组byte[]. 字节流读写文件 针对文件的读写,JDK专门提供了两个类,分别是FileInputStre ...

  7. php-新特性,生成器的创建和使用

    mark 一下~ http://laravelacademy.org/post/4317.html

  8. Unity中Oculus分屏相机和普通相机一键切换

    Unity中Oculus分屏相机和普通相机一键切换 一.OCulus 分屏相机介绍 在VR开发工程中,总会觉得OC分屏的处理太慢,严重浪费时间啊! 但是不使用有不好调试,来回切换相机就成为了一个必须. ...

  9. android中用studio更改包名

    Android Studio,咱们开发安卓的利器,自推出就受到移动开发者的追捧,但一路走来,大家谈到他,充满了兴奋之情之余,也略显羞涩.随版本自推出以来,不断完善BUG,但咱们还是深深地踩了进去,说多 ...

  10. php学习八:封装

    一:在php中,用class关键字来创建一个类,即进行封装:在类里面有成员属性和方法行为组成: 1.成员属性:用关键字var来声明,可以给初始值也可以不给;现在var废弃,用public来声明,pub ...