在PHP中可以使用array_merge函数和两个数组相加array+array的方式进行数组合并,但两者效果并不相同,区别如下:

  • 当下标为数值时,array_merge()不会覆盖掉原来的值,但array+array合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖).
  • 注意区别 array_merge_recursive函数
  • 当下标为字符时,array+array 把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值.

演示案例:

<?php
echo "<pre>"; /*
*****************
* 如果key是字符串 *
*****************
*/
$arr1 = [
'name' => 'zhangsan',
'age' => '28',
];
$arr2 = [
'name' => 'lisi',
'age' => '17',
];
//如果键名为字符,且键名相同,array_merge()最后面的元素值会覆盖前面的元素值
print_r(array_merge($arr1, $arr2));
/*
Array
(
[name] => lisi
[age] => 17
)
*/ //PHP中还有一个函数:array_merge_recursive
//递归地合并一个或多个数组,如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去
print_r(array_merge_recursive($arr1, $arr2));
/*
Array
(
[name] => Array
(
[0] => zhangsan
[1] => lisi
) [age] => Array
(
[0] => 28
[1] => 17
) )
*/ //如果键名为字符,且键名相同,两个数组相加会将最先出现的元素值作为结果
print_r($arr1 + $arr2);
/*
Array
(
[name] => zhangsan
[age] => 28
)
*/ //两个数组的key的个数不相同
$arr1 = [
'name' => 'zhangsan',
'age' => '28',
];
$arr2 = [
'name' => 'lisi',
'age' => '17',
'sex' => 'nan',
];
print_r(array_merge($arr1, $arr2));
/*
Array
(
[name] => lisi
[age] => 17
[sex] => nan
)
*/ print_r($arr1 + $arr2);
/*
Array
(
[name] => zhangsan
[age] => 28
[sex] => nan
)
*/ echo "<hr>"; /*
***************
* 如果key是数字 *
***************
*/
$arr1 = ['zhangsan','28'];
$arr2 = ['lisi','17']; //如果键名为数字,array_merge()不会进行覆盖,但是会覆盖掉前面相同键值
print_r(array_merge($arr1,$arr2));
/*
Array
(
[0] => zhangsan
[1] => 28
[2] => lisi
[3] => 17
)
*/ //如果键名为数字,数组相加会将最先出现的值作为结果,后面键名相同的会被抛弃
print_r($arr1+$arr2);
/*
Array
(
[0] => zhangsan
[1] => 28
)
*/ //再比如
$arr1 = [3=>'zhangsan',9=>'28'];
$arr2 = [3=>'lisi',9=>'17',12=>'nan']; //array_merge()会覆盖掉前面相同键值,重新从0开始进行键排序
print_r(array_merge($arr1,$arr2));
/*
Array
(
[0] => zhangsan
[1] => 28
[2] => lisi
[3] => 17
[4] => nan
)
*/ //数组相加 不会对键进行重新排序
print_r($arr1+$arr2);
/*
Array
(
[3] => zhangsan
[9] => 28
[12] => nan
)
*/

PHP中array_merge和array+array的区别的更多相关文章

  1. PHP中array_merge函数与array+array的区别

    在PHP中可以使用array_merge函数和两个数组相加array+array的方式进行数组合并,但两者效果并不相同,下面为大家介绍两者具体的使用区别. 区别如下: 当下标为数值时,array_me ...

  2. PHP中array_merge和array相加的区别分析

    今天处理一个这样的问题:如何获取字符键名相同值不同的两个数组值集合,用array_merge和数组相加都不可行,让我认真比较了下PHP中array_merge和array相加的区别 首先来看看键名是s ...

  3. php 通过array_merge()和array+array合并数组的区别和效率比较

    众所周知合并两个数组可以使用array_merge(),这是php提供的一个函数.另外还可以通过 array 的方式来合并数组,这两种直接有什么区别,哪一个的效率更高呢? array_merge() ...

  4. Java-杂项: Java中Array和ArrayList区别

    ylbtech-Java-杂项: Java中Array和ArrayList区别 1.返回顶部 1. 1)精辟阐述:可以将 ArrayList想象成一种“会自动扩增容量的Array”. 2)Array( ...

  5. 解析C#中[],List,Array,ArrayList的区别及应用

    [] 是针对特定类型.固定长度的. List 是针对特定类型.任意长度的. Array 是针对任意类型.固定长度的. ArrayList 是针对任意类型.任意长度的. Array 和 ArrayLis ...

  6. array_flip() array_merge() array+array的使用总结

    array_flip(array); //传递一个数组参数,对该数组的键.值进行翻转 例如: $a = array( 'a', 'b', 'c' ); print_r(array_flip($a)); ...

  7. PHP array_flip() array_merge() array+array的使用总结

    array_flip(array); //传递一个数组参数,对该数组的键.值进行翻转 例如: $a = array( 'a', 'b', 'c' ); print_r(array_flip($a)); ...

  8. C# 中的数组(array)

    原文 C# 中的数组(array) 特性 数组是一个无序的元素序列.数组元素存储在一个连续性的内存块中,并可使用一个整数索引来访问. C# 声明数组变量时,数组的大小不是声明的一部分.这点与C/C++ ...

  9. php中foreach()函数与Array数组经典案例讲解

    //php中foreach()函数与Array数组经典案例讲解 function getVal($v) { return $v; //可以加任意检查代码,列入要求$v必须是数字,或过滤非法字符串等.} ...

随机推荐

  1. linux php --ini

    $ php --ini

  2. set names utf8;

    对应用程序来说,强制将它们发起的数据库链接设置成UTF8编码有什么办法? 每个链接建立时先执行set names utf8; [mysqld] init-connect=‘set names utf8 ...

  3. React Native常用组件之ListView

    1. ListView常用属性 ScrollView 相关属性样式全部继承 dataSource ListViewDataSource 设置ListView的数据源 initialListSize n ...

  4. 加载所有jar包下指定文件

    加载所有jar包下指定文件: 如spring中加载 META-INF/spring.handlers 加载 org.springframework.core.io.support.Properties ...

  5. FasterRCNN 提升分类精度(转)

    近年来,随着深度学习的崛起,计算机视觉得到飞速发展.目标检测作为计算机视觉的基础算法,也搭上了深度学习的快车.基于Proposal的检测框架,从R-CNN到Faster R-CNN,算法性能越来越高, ...

  6. C#WebService服务在Windows7的部署

    (一)C#WebService服务在Windows7的部署  一.在控制面板,程序与卸载中安装IIS组件. 二.IIS无法显示WebService的.asmx文件.解决办法:注:(这里可以不用考虑,直 ...

  7. KL divergence

    Kullback-Leibler divergence 形式: 性质: 非负 P=Q时,D[P||Q]=0 不对称性:D(P||Q)≠D(Q||P) 自信息:符合分布 P 的某一事件 x 出现,传达这 ...

  8. SFTP工具类

    1.SFTP搭建方法: 地址: http://www.jb51.net/article/101405.htm https://blog.csdn.net/helloloser/article/deta ...

  9. 内建模块collections的使用

    # -*-coding:utf-8 -*- from collections import namedtuple Point=namedtuple('Point',['x','y']) p=Point ...

  10. THINKPHP5近期暴露的漏洞

    这个THINKPHP5的漏洞涉及好几个版本,我测试中5.0.21和5.0.22都有,据说是5.0 ~ 5.0.23之间的版本都存在,这个漏洞可以执行写文件的操作. 当然了,赶紧升级框架到安全版本是比较 ...