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]区别的更多相关文章

  1. PHP数组合并+与array_merge的区别分析 & 对多个数组合并去重技巧

    PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的! 主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意 ...

  2. php数组合并方法array_merge + 排序array_multisort方法 array_unique数组去重 array_values数组索引值重新从0开始递增

    $dingdan = array_merge($jie_dingdan,$user_dingdan);//数组合并方法 $orderFile = array(); foreach($dingdan a ...

  3. PHP数组合并和去重的函数有哪些

    PHP数组合并和去重的函数有哪些 一.总结 一句话总结:合并:array_merge() array_merge_recursive() +号:去重:array_flip() array_unique ...

  4. PHP合并数组+与array_merge的区别

    http://www.phpernote.com/php-string/351.html PHP中合并两个数组可以使用+或者array_merge,但这两个还是有区别的   主要区别是当两个或者多个数 ...

  5. PHP中数组合并的两种方法及区别介绍

    PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码代码如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = ...

  6. 011——数组(十一)array_merge array_merge_recursive array_change_key_case

    <?php /** */ //array_merge() 将多个数组合并,生成新数组.当键名相同时,后者覆盖前者 /*$array1=array('weburl'=>"bbs.b ...

  7. PHP 数组相加 和 数组合并array_merge

    $arr1 = array("a"=>"PHP","b"=>"java","python" ...

  8. PHP数组合并 array_merge 与 + 的差异

    在PHP数组合并出过几次问题都没记住,写下来加强一点记忆 PHP数组在合并时,使用 array_merge 与 + 的差异: 1.array_merge(array $array1 [, array  ...

  9. PHP数组直接相加和array_merge的区别

    array_merge是很常用的数组合并函数,但是两个数组直接相加对开发也是很有帮助的,两者之间有什么差别,这里记录一下: 首先是以数字为索引 array_merge会将两个数组按照先后顺序组成一个新 ...

  10. ES6展开运算符数组合并,函数传参

    定义: .展开运算符允许一个表达式在某处展开. 使用场景 1.展开函数在多个参数的地方使用 .意指用于函数传参 2.多个元素的地方使用,意指用于数组字面量 3.多个边框的地方使用,意指用于解构赋值 函 ...

随机推荐

  1. (0.2.6)Mysql安装——编译安装

    (0.2.6)Mysql安装——编译安装 待完善

  2. 001-linux scp文件拷贝

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...

  3. Vim插件:Unite新手指导(译)

    Unite是什么? Unite可以在一个项目中快速浏览文件.但是它不仅限于文件,其他任何可以列出的东西都可以很好的被显示和搜索.这个开放式的特性很可能是人们找到它的原因(原文:This open-en ...

  4. C语言赋初始值

  5. mycat 指定mycat节点

    mycat 指定节点: /*!mycat:dataNode=order1*/select seq_nextval('APPOINTMENT_NO'); 指定节点创建存储过程或建表: /*!mycat: ...

  6. JVM类加载机制(转)

    原文出自:http://www.cnblogs.com/ityouknow/p/5603287.html 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运 ...

  7. 浅谈WLAN干扰与抗干扰技术

    一. 无线干扰的分类和来源 无线干扰按照类型可划分为WLAN干扰和非WLAN干扰.WLAN干扰是指干扰源发送的RF信号也符合802.11标准,除此之外都是非WLAN干扰.对WLAN干扰,可进一步按照频 ...

  8. redis日常操作

    redis针对所有类型的日常操作: keys * ## 取出所有key keys my* ## 模糊匹配 exists name ## 存在name键返回1,否则返回0 del key1 ## 删除一 ...

  9. tomcat服务无响应堆栈分析

    tomcat服务突然无响应了,导出内存堆栈和线程堆栈,分析后发现是同步锁使用不合理导致的. [root@prd-dtb-web-01 ~]# [root@prd-dtb-web-01 ~]# jmap ...

  10. Ubuntu16.04中用et对jmeter生成的数据统计成图表

    在Ubuntu系统中,用ctrl+Alt+t 打开终端: 输入et,即打开wps: 整理需要形成图表的数据,如: 用excel生成图表,如下: 表得出的性能图表,方法: 1.工具栏中选择插入——二维折 ...