Swap array values with php

后端 未结 11 1120
感动是毒
感动是毒 2020-12-10 23:39

I have an array:

array(
    0 => \'contact\',
    1 => \'home\',
    2 => \'projects\'
);

and I need to swap the \'contact\' with

11条回答
  •  既然无缘
    2020-12-11 00:38

    I tested the 4 ways proposed to compare the performance:

    $array=range(0,9999); //First 10000 natural numbers
    $time=-microtime(true); //Start time
    for($i=0;$i<1000000;++$i){ //1 Millon swaps
        $a=array_rand($array); //Random position: ~60ms
        $b=array_rand($array); //Random position: ~60ms
        //Using a temp variable: ~70ms
        $temp=$array[$a];$array[$a]=$array[$b];$array[$b]=$temp;
        //Using list language construct: ~ 140ms
        list($array[$a],$array[$b])=array($array[$b],$array[$a]);
        //Using PHP 7.1+ syntax: ~ 140ms
        [$array[$a],$array[$b]]=[$array[$b],$array[$a]];
        //Using array_replace function: ~ 28000ms
        array_replace($array,[$array[$a],$array[$b]]);
    }
    $time+=microtime(true); //Elapsed time
    echo "Time: ",sprintf('%f', $time)," seconds";
    

    Although it is probably not the most comfortable way, using a temporary variable seems to be 2x faster than the next 2 methods, and 400x faster than using the array_replace function.

提交回复
热议问题