php array_merge和运算符+
其实很多时候我都很疑惑为什么同维度的数组不能直接使用运算+直接进行相加,然后结果就是两个数组合并的在一起的新结果,这个就有点跟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和运算符+的更多相关文章
- Python基础0:变量 赋值 表达式和运算符
变量: 前面我们在使用print()输出内容的时候,如果内容很长,后面要再次输出的时候,就需重新在输入一遍. 如果给输出的内容起个简单的别名.这样我们用简短的别名来代替长内容,下次要输出的时候就直接使 ...
- Javascript权威指南——第二章词法结构,第三章类型、值和变量,第四章表达式和运算符,第五章语句
第二章 词法结构 一.HTML并不区分大小写(尽管XHTML区分大小写),而javascript区分大小写:在HTML中,这些标签和属性名可以使用大写也可以使用小写,而在javascript中必须小写 ...
- Shell编程基础教程2--变量和运算符
2.变量和运算符 2.1.变量的类型 本地变量:环境变量:变量替换(显示变量):位置变量:标准变量:特殊变量: 2.2.本地变量 本地变量在用户现在的shell生命周期的脚本中使用 在命令行, LOC ...
- IOS开发新手教程(一)-数据类型和运算符
OC语法入门(一) 数据类型和运算符 1.1凝视 凝视和其它语言一样,同意单行 ,多行凝视,一份规范的代码里面须要有一些正式的凝视,例如以下凝视: /* 这是多行 凝视 */ //这是多行凝视 OC语 ...
- 编写可维护的JavaScript—语句和表达式&变量、函数和运算符
语句和表达式 所有的块语句都应当使用花括号.包括: if for while do…while… try…catch…finally //不好的写法 if (condition) doSomethin ...
- Javascript学习2 - Javascript中的表达式和运算符
原文:Javascript学习2 - Javascript中的表达式和运算符 Javascript中的运算符与C/C++中的运算符相似,但有几处不同的地方,相对于C/C++,也增加了几个不同的运算符, ...
- JavaScript深入浅出补充——(一)数据类型,表达式和运算符
项目基本做完,在进行下一阶段学习之前先看视频学习回顾一下JavaScript 一.数据类型 JavaScript中有五种原始类型和一种对象类型 JavaScript弱类型语言中隐式转换 num-0 字 ...
- Java 第二章 变量、数据类型和运算符
第二章 变量.数据类型和运算符 什么是变量: 变量代表一块内存区域,变量类型不一样,这一块内存的大小也不一样. #在编程语言里面,你可以通过定义变量,向内存里添加数据或者修改内存已有的数据. ...
- C#图解教程 第八章 表达式和运算符
表达式和运算符 表达式字面量 整数字面量实数字面量字符字面量字符串字面量 求值顺序 优先级结合性 简单算术运算符求余运算符关系比较运算符和相等比较运算符递增运算符和递减运算符条件逻辑运算符逻辑运算符移 ...
随机推荐
- CentOS tree命令详解
inux下tree命令详解---linux以树状图逐级列出目录的内容命令 ############################################################### ...
- [ATL/WTL]_[中级]_[保存CBitmap到文件-保存屏幕内容到文件]
场景: 1. 在做图片处理时,比方放大后或加特效后须要保存CBitmap(HBITMAP)到文件. 2.截取屏幕内容到文件时. 3.不须要增加第3方库时. 说明: 这段代码部分来自网上.第一次学atl ...
- oracle 触发器 pragma autonomous_transaction
from:http://blog.csdn.net/ruru7989/article/details/30712987一般情况下在触发器中是不能使用DDL语句的,使用自治事务可以实现 可以在触发器中加 ...
- Android:控件布局(相对布局)RelativeLayout(转)
相对布局常用属性: 子类控件相对子类控件:值是另外一个控件的id android:layout_above----------位于给定DI控件之上android:layout_below ------ ...
- linux命令之find和locate
1.find / -name log.xml 按照名字查找log.xml文件 2.locate log.xml 查找log.xml文件(效率高) 3.grep 'hive' word. ...
- scala函数进阶篇
1.求值策略scala里有两种求值策略Call By Value -先对函数实参求值,在函数体中用这个求出的参数值.Call By Name -先不对函数实参求值,而是函数实参每次在函数体内被用到时都 ...
- mac 操作idea快捷键
http://blog.csdn.net/rainytooo/article/details/51469126 在mac下idea的常用快捷键如下,下面的快捷键都亲自试用,并有一些和eclipse对比 ...
- mqtt 服务器与客户端通讯
mqtt 服务器与客户端通讯. 服务器端 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...
- 首个vue.js项目收尾中……
前言: 4.26号入手vue.js+elementUI,迄今为止我们的工作应该可以暂时告一段落了:下周开始,又是新的“征程”. 过程:站在接近完成的角度来看这个项目,似乎的确有许多事情需要自己阐述. ...
- ReactiveCocoa - iOS开发的新框架
本文转载至 http://www.infoq.com/cn/articles/reactivecocoa-ios-new-develop-framework ReactiveCocoa(其简称为RAC ...