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

array_merge()

格式: array array_merge ( array … ] )

注意(区别):

  • 如果合并的数组使用关联索引,数组中有相同的键名,则该键名后面的值将覆盖前一个值。
  • 如果合并的数组使用数字索引,数组中有相同的键名, 后面的值将不会覆盖原来的值,而是附加到后面。
  • 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

$array + $array

注意(区别):

  • 如果合并的数组中有相同的键名,最先出现的值作为最终结果返回(和array_merge关联索引的情况正好相反)

循环10万次的用时

$arr1 = [0,1,2,3];
$arr2 = ['0'=>0,1,2,'5'=>3]; var_dump(array_merge($arr1,$arr2)); echo '<br/>'; var_dump($arr1+$arr2); echo '测试array_merge()和+的效率';
echo '<br/>'; $execTime = 100000;
$time = time(); for ($i = 0; $i < $execTime; $i++) {
array_merge($arr1,$arr2);
} echo '用时:' .(time() - $time);
echo '<br/>'; $time = time(); for ($i = 0; $i < $execTime; $i++) {
$arr1+$arr2;
} echo '用时:' .(time() - $time);
echo '<br/>';

输出结果:

array_merge() : 6s 
$array + $array : 0s

总结

array_merge() 和 + 都可以起到合并数组的作用,但是它们处理相同键的方式不同,array_merge() 返回的是后面的键的值, + 返回的是第一个键的值。+ 的效率要高于array_merge();

php 通过array_merge()和array+array合并数组的区别和效率比较的更多相关文章

  1. 使用Array和[]创建数组的区别

    原文 简书原文:https://www.jianshu.com/p/57a337d20aea 大纲 前言 对使用Array和[]创建数组的区别的解释 个人理解 前言 JS定义数组变量时,在不需要给定数 ...

  2. PHP函数对比 array_merge()与加号合并数组的区别

    首先准备两个数组,从数组索引类型分别讨论. 数组索引为字符串索引时: $a = array('a' => 1, 'b' => 2, 'c' => 3); $b = array('b' ...

  3. php中array_merge合并数组详解

    如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的).如果数组是数字索引的,则键名会以连续方式重新索引. 注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数 ...

  4. php合并数组并保留键值的方法

    答案:使用 + 连接两个数组,替换array_merge()函数. php合并数组,一般会使用array_merge方法. array_merge — 合并一个或多个数组 array array_me ...

  5. Leetcode#88. Merge Sorted Array(合并两个有序数组)

    题目描述 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m ...

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

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

  7. PHP合并数组array_merge函数运算符加号与的区别

    两个的区别是:1.数组键名为数字键名时,要合并的两个数组中有同名数字KEY的时候,使用array_merge()不会覆盖掉原来的值,而使用“+”合并数组则会把最先出现的值作为最终结果返回,而把后面的数 ...

  8. PHP中使用函数array_merge()合并数组

    如果明白数组其实就是map的话,我想你就会明白array_merge为什么要这么实现了 PHP中合并数组分成两种情况 1.如果这两个数组中有相同的字符串键名: <?php header('Con ...

  9. PHP合并数组+与array_merge的区别分析

    主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意 1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面 ...

随机推荐

  1. "pip3 install requests"

    后续设置参考 “selenium python3” https://www.cnblogs.com/jpr-ok/p/10108231.html

  2. NetBeans issues and solutions.(build.xml and debug multiple projects)

    Copy a directory to another directory when building the .jar in NetBeans in the build.xml file. Solu ...

  3. Redis:C#使用Redis(1)

    一.安装 1.下载安装包: 官方网站:redis.io 官方推荐windows版本:https://github.com/MSOpenTech/redis 2:下载压缩包,解压后如下 redis-se ...

  4. python中参数传递之位置传递、关键字传递、包裹传递与解包裹

    原文地址https://blog.csdn.net/love666666shen/article/details/77131487 1.位置与关键字传递 (1)位置传递:先用形式参数定义,然后在调用时 ...

  5. MACD各分时背离所对应的时间

    MACD各分时背离所对应的时间 5分钟背离结构——2小时.           15分钟背离结构——一天半(6小时).           30分钟背离结构——3天(12小时).            ...

  6. 连接mysql && ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

    上一篇:mysql服务正在启动 mysql服务无法启动 && mysql启动脚本 mysql关闭脚本 此篇目编写一个核心目的: 1.mysql连接 先抛出一个问题 这是因为mysql服 ...

  7. oracle将unix 时间戳转换为date类型

    select to_date('19700101','yyyyMMdd')+numtodsinterval(8*3600,'second')+numtodsinterval(60,'second') ...

  8. python中使用rabbitmq消息中间件

    上周一直在研究zeromq,并且也实现了了zeromq在python和ruby之间的通信,但是如果是一个大型的企业级应用,对消息中间件的要求比较高,比如消息的持久化机制以及系统崩溃恢复等等需求,这个时 ...

  9. html5-文件的基本格式

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  10. MATLAB中文件的读写和数据的导入导出

    http://blog.163.com/tawney_daylily/blog/static/13614643620111117853933/ 在编写一个程序时,经常需要从外部读入数据,或者将程序运行 ...