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. 001-shell基础,创建,运行

    一.概述 Shell 是一个用 C 语言编写的程序.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服 ...

  2. Linux:Centos7升级内核(转)

    更新前,内核版本为: uname -r 3.10.0-327.10.1.el7.x86_64 升级的方法: 1.导入key rpm --import https://www.elrepo.org/RP ...

  3. 百度NLP三面

    首先,面试官根据项目经验进行提问,主要是自然语言处理相关的问题:然后写代码题,字符串处理和数字运算居多:再者是一些语言基础知识,百度用的linux平台,C++和python居多.下面列出我面试中的一些 ...

  4. inline-block布局错位问题

    如图, 两个display为 inline-block的元素,会出现情况 针对第三种情况: 需要添加 vertical-align: top; 参考代码 <!DOCTYPE html> & ...

  5. 2017浙江省赛 H - Binary Tree Restoring ZOJ - 3965

    地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3965 题目: iven two depth-first-search ...

  6. ZOJ - 4048 Red Black Tree (LCA+贪心) The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online

    题意:一棵树上有m个红色结点,树的边有权值.q次查询,每次给出k个点,每次查询有且只有一次机会将n个点中任意一个点染红,令k个点中距离红色祖先距离最大的那个点的距离最小化.q次查询相互独立. 分析:数 ...

  7. 三张图看遍Linux性能监控、测试、优化工具

    Linux 平台上的性能工具有很多,眼花缭乱,长期的摸索和经验发现最好用的还是那些久经考验的.简单的小工具.系统性能专家 Brendan D. Gregg在最近的 LinuxCon NA 2014 大 ...

  8. web前端基础——初识CSS

    1 CSS概要 CSS(Cascading Style Sheets)称为层叠样式表,用于美化页面(单纯HTML写的页面只是网页框架和内容的组合,相当于赤裸的人,而CSS则是给赤裸的人穿上华丽的外衣) ...

  9. 滑块控件CCControlSlider

    #include "cocos-ext.h" //包含头文件 using namespace cocos2d::extension;//引用命名空间 /** * 创建CCContr ...

  10. 一只代码小白git托管路上的二三事

    [经验]一只代码小白git托管路上的二三事 写在前面的话 寒假的时候,娄老师给我们布置了代码托管的作业,并要求把托管地址发给学委.因假期的时候没有带电脑回家,所以只是在手机上草草注册了,也稀里糊涂就将 ...