美文网首页
array_push 与 $arr[]=$value 比较

array_push 与 $arr[]=$value 比较

作者: swoft_ | 来源:发表于2018-05-08 10:39 被阅读0次

    官方文档介绍array_push

    (PHP 4, PHP 5, PHP 7)

    array_push — 将一个或多个单元压入数组的末尾(入栈)
    说明

    int array_push ( array &$array , mixed $value1 [, mixed $... ] )
    

    array_push() 将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加。和如下效果相同:

    <?php
    $array[] = $var;
    ?>
    

    Note: 如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担。

    Note:如果第一个参数不是数组,array_push() 将发出一条警告。这和 $var[] 的行为不同,后者会新建一个数组。

    测试真实的执行时间

    function getTime()
    {
        list($unix, $mse) = explode(' ', microtime());
        return ($unix + $mse);
    }
    
    
    $startTime = getTime();
    $arr = [];
    for ($i = 0; $i < 1000000; $i++) {
        array_push($arr, $i);
    }
    $endTime = getTime();
    echo "array_push 循环一百万次的时间" . ($endTime - $startTime)*1000 . "\n";
    
    
    $startTime = getTime();
    $arr = [];
    for ($i = 0; $i < 1000000; $i++) {
        $arr[] = $i;
    }
    $endTime = getTime();
    echo "arr[] = i 循环一百万次的时间" . ($endTime - $startTime)*1000 . "\n";
    
    
    $startTime = getTime();
    $arr = [];
    for($i=0; $i<1000000; $i=$i+50){
        array_push($arr, $i,$i+1,$i+2,$i+3,$i+4,$i+5,$i+6,$i+7,$i+8,$i+9,$i+10,
            $i+11,$i+12,$i+13,$i+14,$i+15,$i+16,$i+17,$i+18,$i+19,$i+20,
            $i+21,$i+22,$i+23,$i+24,$i+25,$i+26,$i+27,$i+28,$i+29,$i+30,
            $i+31,$i+32,$i+33,$i+34,$i+35,$i+36,$i+37,$i+38,$i+39,$i+40,
            $i+41,$i+42,$i+43,$i+44,$i+45,$i+46,$i+47,$i+48,$i+49,$i+50);
    }
    $endTime = getTime();
    echo "array_push 多个元素循环一百万次的时间" . ($endTime - $startTime)*1000 . "\n";
    

    总结

    如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担。
    如果同时压入多个元素,使用array_push效率高,因为不用重复获取文件尾的指针。

    相关文章

      网友评论

          本文标题:array_push 与 $arr[]=$value 比较

          本文链接:https://www.haomeiwen.com/subject/cwjirftx.html