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();

  • 相关阅读:
    sqlhelper使用指南
    大三学长带我学习JAVA。作业1. 第1讲.Java.SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行 大三学长带我学习JAVA。作业1.
    pku1201 Intervals
    hdu 1364 king
    pku 3268 Silver Cow Party
    pku 3169 Layout
    hdu 2680 Choose the best route
    hdu 2983
    pku 1716 Integer Intervals
    pku 2387 Til the Cows Come Home
  • 原文地址:https://www.cnblogs.com/-mrl/p/9225840.html
Copyright © 2011-2022 走看看