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. sql server 测试delete后数据空间情况

    总结结论: [1]如果是索引组织表,删除的数据空间是会被文件设置为可用状态,其他表都可以使用. [2]如果是堆表,删除数据空间也会设置为可用状态,但是只能给被删除数据的表使用. [3]truncate ...

  2. window7配置SQLserver 允许被远程连接

    需要别人远程你的数据库,首先需要的是在一个局域网内,或者连接的是同一个路由器,接下来就是具体步骤: (一)首先是要检查SQLServer数据库服务器中是否允许远程链接.其具体操作为: (1)打开数据库 ...

  3. 需求用例分析之五:业务用例之Rational系

    版权声明:作者:张克强.未经作者允许不得转载. https://blog.csdn.net/zhangmike/article/details/28134897 作者:张克强    作者微博:张克强- ...

  4. FileZilla使用

    FileZilla是一个免费开源的FTP软件,分为客户端版本和服务器版本,具备所有的FTP软件功能.可控性.有条理的界面和管理多站点的简化方式使得Filezilla客户端版成为一个方便高效的FTP客户 ...

  5. 百度NLP一面

    C++ :     1.拷贝构造函数和重载=符分别在什么情况下被调用,实现有什么区别 2.虚函数的目的,虚函数和模板类的区别,如何找到虚函数 常规算法: 1. 如何输出一个集合的所有真子集,递归和非递 ...

  6. [golang note] 匿名组合

    匿名组合 golang也提供了继承机制,但采用组合的文法,因此称为匿名组合.与其他语言不同, golang很清晰地展示出类的内存布局是怎样的. • 非指针方式组合 ▶  基本语法 // 基类 type ...

  7. 工作笔记-javascript-网络层封装

    /** * @Author Mona * @Date 2016-12-08 * @description 网络层封装 */ /** * 封装基本请求方式 */ window.BaseRequest = ...

  8. docker——镜像(image)

    镜像相关命令一览表: docker images docker tag docker inspect docker history docker search docker pull/push doc ...

  9. flask自定义session

    根据内置session原理可以进行session的定制: #!/usr/bin/env python # -*- coding:utf-8 -*- import uuid import json fr ...

  10. XVII Open Cup named after E.V. Pankratiev Grand Prix of Moscow Workshops, Sunday, April 23, 2017 Problem K. Piecemaking

    题目:Problem K. PiecemakingInput file: standard inputOutput file: standard outputTime limit: 1 secondM ...