I have an array:
array(
0 => \'contact\',
1 => \'home\',
2 => \'projects\'
);
and I need to swap the \'contact\' with
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.