zoukankan      html  css  js  c++  java
  • php 通过array_merge()和array+array合并数组的区别和效率比较

    众所周知合并两个数组可以使用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();

  • 相关阅读:
    线程数究竟设多少合理
    Elasticsearch 技术分析(八):剖析 Elasticsearch 的索引原理
    作为程序员你是如何学习的?
    系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路
    kms相关文档
    删除所有docker容器镜像
    ubuntu mysql5.7安装
    GORM自定义日志配置
    SQL清空全部表数据
    Nginx 证书
  • 原文地址:https://www.cnblogs.com/-mrl/p/9225840.html
Copyright © 2011-2022 走看看