PHP数组合并:[“+”运算符]、[array_merge]、[array_merge_recursive]区别
1、“+”运算符
规则:
当两个数组的键名是数字键名或者字符串键名
$c = $a + $b
在$a后追加($b在$a中不存在的键名)键名和值
注意:
1、不覆盖,只是追加不存在的键名和对应的值
2、键名不重新索引
3、无论是全部数字键名还是混合,都只是追加键名和值,如果键名相同则不进行追加,即把最先出现的值作为最终结果返回
例1:数字键名
$a = array(
'a',
);
$b = array(
'u',
);
$c = $a + $b;
var_dump($c); output:
array(1) {
[0]=>
string(1) "a"
}
例2:数字键名
$a = array(
66=>'a',
);
$b = array(
60=>'u',
66=>'c'
);
$c = $a + $b;
var_dump($c); output:
array(2) {
[66]=>
string(1) "a"
[60]=>
string(1) "u"
}
例3:字符键名
<?php
$a = array(
1=>'a',
2=>'b',
'c'=>'c',
'd'=>'d',
);
$b = array(
1=>'u',
3=>'v',
'c'=>'w',
'd'=>'x',
'y'=>'y',
60=>'z',
);
$c = $a + $b;
var_dump($c);
?> output:
array(7) {
[1]=>
string(1) "a"
[2]=>
string(1) "b"
["c"]=>
string(1) "c"
["d"]=>
string(1) "d"
[3]=>
string(1) "v"
["y"]=>
string(1) "y"
[60]=>
string(1) "z"
}
2、array array_merge ( array array1 [, array array2 [, array ...]] )
规则:
array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。
然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
注意:
1、数字索引,不会覆盖,值合并后,键名会连续方式重新索引
2、字符串键名,则该键名后面的值将覆盖前一个值
例1:数字键名
$a = array(
'a',
);
$b = array(
'u',
);
$c = array_merge($a, $b);
var_dump($c); output:
array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "u"
}
例2:数字键名
$a = array(
66=>'a',
);
$b = array(
60=>'u',
66=>'c'
);
$c = array_merge($a, $b);
var_dump($c); output:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "u"
[2]=>
string(1) "c"
}
例3:字符键名
$a = array(
1=>'a',
2=>'b',
'c'=>'c',
'd'=>'d',
);
$b = array(
1=>'u',
3=>'v',
'c'=>'w',
'd'=>'x',
'y'=>'y',
60=>'z',
);
$c = array_merge($a, $b);
var_dump($c); output:
array(8) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
["c"]=>
string(1) "w"
["d"]=>
string(1) "x"
[2]=>
string(1) "u"
[3]=>
string(1) "v"
["y"]=>
string(1) "y"
[4]=>
string(1) "z"
}
3、array array_merge_recursive ( array array1 [, array ...] )
array_merge_recursive() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。
然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。
注意:
1、规则跟array_merge基本相同,只是在处理相同字符键名的时候,采用递归追加
例1:数字键名
$a = array(
'a',
);
$b = array(
'u',
);
$c = array_merge_recursive($a, $b);
var_dump($c); output:
array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "u"
}
例2:数字键名
$a = array(
'a',
);
$b = array(
'u',
);
$c = array_merge_recursive($a, $b);
var_dump($c); output:
array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "u"
}
例3:字符键名
$a = array(
1=>'a',
2=>'b',
'c'=>'c',
'd'=>'d',
);
$b = array(
1=>'u',
3=>'v',
'c'=>'w',
'd'=>'x',
'y'=>'y',
60=>'z',
);
$c = array_merge_recursive($a, $b);
var_dump($c); output:
array(8) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
["c"]=>
array(2) {
[0]=>
string(1) "c"
[1]=>
string(1) "w"
}
["d"]=>
array(2) {
[0]=>
string(1) "d"
[1]=>
string(1) "x"
}
[2]=>
string(1) "u"
[3]=>
string(1) "v"
["y"]=>
string(1) "y"
[4]=>
string(1) "z"
}
PHP数组合并:[“+”运算符]、[array_merge]、[array_merge_recursive]区别的更多相关文章
- PHP数组合并+与array_merge的区别分析 & 对多个数组合并去重技巧
PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的! 主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意 ...
- php数组合并方法array_merge + 排序array_multisort方法 array_unique数组去重 array_values数组索引值重新从0开始递增
$dingdan = array_merge($jie_dingdan,$user_dingdan);//数组合并方法 $orderFile = array(); foreach($dingdan a ...
- PHP数组合并和去重的函数有哪些
PHP数组合并和去重的函数有哪些 一.总结 一句话总结:合并:array_merge() array_merge_recursive() +号:去重:array_flip() array_unique ...
- PHP合并数组+与array_merge的区别
http://www.phpernote.com/php-string/351.html PHP中合并两个数组可以使用+或者array_merge,但这两个还是有区别的 主要区别是当两个或者多个数 ...
- PHP中数组合并的两种方法及区别介绍
PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码代码如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = ...
- 011——数组(十一)array_merge array_merge_recursive array_change_key_case
<?php /** */ //array_merge() 将多个数组合并,生成新数组.当键名相同时,后者覆盖前者 /*$array1=array('weburl'=>"bbs.b ...
- PHP 数组相加 和 数组合并array_merge
$arr1 = array("a"=>"PHP","b"=>"java","python" ...
- PHP数组合并 array_merge 与 + 的差异
在PHP数组合并出过几次问题都没记住,写下来加强一点记忆 PHP数组在合并时,使用 array_merge 与 + 的差异: 1.array_merge(array $array1 [, array ...
- PHP数组直接相加和array_merge的区别
array_merge是很常用的数组合并函数,但是两个数组直接相加对开发也是很有帮助的,两者之间有什么差别,这里记录一下: 首先是以数字为索引 array_merge会将两个数组按照先后顺序组成一个新 ...
- ES6展开运算符数组合并,函数传参
定义: .展开运算符允许一个表达式在某处展开. 使用场景 1.展开函数在多个参数的地方使用 .意指用于函数传参 2.多个元素的地方使用,意指用于数组字面量 3.多个边框的地方使用,意指用于解构赋值 函 ...
随机推荐
- 日期格式私人定制——SimpleDateFormat
[前言] 最近项目需要特殊的日期格式,又恰好是String类型的,以前都没怎么用到SimpleDateFormat这个类去格式化日期,脑子里蹦出来的思路就是先把Date给toString了,然后慢慢切 ...
- mysql ERROR 1264 (22003): Out of range value for column 'x' at row 1 错误
mysql> insert into t1 values (-129), (-128), (127),(128);ERROR 1264 (22003): Out of range value f ...
- 简单的SQL注入学习
引贴: http://blog.163.com/lucia_gagaga/blog/static/26476801920168184648754/ 首先需要编写一个php页面,讲php页面放入/opt ...
- 安卓和ios的区别
安卓不闪退,会卡死,有几率复活,也有可能要强制重启,iOS默认闪退,强制重启的几率小很多. 总的来说,如果要深层次挖掘Android的漏洞就要明白linux内核安全,如果要挖身深层次挖掘iOS的漏洞就 ...
- Gentoo64无法启动eth0的问题
Gentoo64在net文件中配置好eth0的静态IP 代码 1.2: /etc/conf.d/net文件的一个示例 # DHCP config_eth0=( "dhcp" ) # ...
- Jmeter使用流程及简单分析监控(转载)
转载自:https://www.cnblogs.com/linglingyuese/archive/2013/03/04/linglingyuese-one.html#undefined 一.安装Jm ...
- 小练手:用HTML5 Canvas绘制谢尔宾斯基三角形
文章首发于我的知乎专栏,原地址:https://zhuanlan.zhihu.com/p/26606208 以前看到过一个问题:谢尔宾斯基三角形能用编程写出来么?该怎么写? - 知乎,在回答里,各方大 ...
- urllib 模块 https://www.cnblogs.com/guishou/articles/7089496.html
1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=Fals ...
- 对Spring Ioc 以及DI的精彩理解
转:http://blog.csdn.net/cyjs1988/article/details/50352916 学习过spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注 ...
- ThinkPHP 调用后台方法
<a href="__URL__/del/id/{$vo['id']}">删除</a>