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.多个边框的地方使用,意指用于解构赋值 函 ...
随机推荐
- Hadoop 入门教程
Hadoop 入门教程 https://blog.csdn.net/kkkloveyou/article/details/52348883
- FileZilla使用
FileZilla是一个免费开源的FTP软件,分为客户端版本和服务器版本,具备所有的FTP软件功能.可控性.有条理的界面和管理多站点的简化方式使得Filezilla客户端版成为一个方便高效的FTP客户 ...
- Java栈之顺序栈存储结构实现
一.栈的基本定义 栈是一种数据结构,它代表一种特殊的线性表,这种线性表只能在固定一端(通常认为是线性表的尾端)进行插入.删除操作的特殊线性表,通常就是在线性表的尾端进行插入.删除操作. 二.顺序栈的实 ...
- 关于Softnet的加密。方式是使用API函数。。关键是开发号
首先是获取 开发号. 类似于这个玩意 http://www.cnblogs.com/wenluderen/p/4853563.html 这个帖子里面有介绍关于开发号的完整资料. ××××××××××× ...
- 关于/proc/进程idpid/fd ,根据fd来查找连接
当创建好epoll句柄后,它就是会占用一个fd值,在linux下如果查看/proc/进程id/fd/,是能够看到这个fd的,所以在使用完epoll后,必须调用close()关闭,否则可能导致fd被耗尽 ...
- 写几个简单用artTemplate的例子
写几个简单的artTemplate的例子,很多框架都有自己的模板(template),没得时候,可以利用artTemplate.js完成 html文件是: <!DOCTYPE html> ...
- Redhat 7.4更新为Centos7的yum并安装docker-ce
以下命令请在root下执行 #删除原有的yum rpm -qa|grep yum|xargs rpm -e --nodeps #install centos yum #wget http://mirr ...
- Hbase1.0伪分布式集群启动失败问题
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl/p/7340681.html 转载请注明出处 最近抽空折腾自己的虚拟机环境时启动伪分布式Hbase集群一直失败, ...
- JVM(3) 垃圾回收器与内存分配策略
文章内容摘自:深入理解java虚拟机 第三章 对象已死? 1. 引用计数算法: 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器为0 ...
- [转]MySQL查看数据库相关信息
原文链接:MySQL查看数据库相关信息 使用MySQL时,需要了解当前数据库的情况,例如当前的数据库大小.字符集.用户等等.下面总结了一些查看数据库相关信息的命令 1:查看显示所有数据库 mysql& ...