Say for instance I have ...
$var1 = "ABC" $var2 = 123
and under certain conditions I want to swap the two around like so...
$var1 = 123 $var2 = "ABC"
Is there a PHP function for doing this rather than having to create a 3rd variable to hold one of the values then redefining each, like so...
$var3 = $var1 $var1 = $var2 $var2 = $var3
For such a simple task its probably quicker using a 3rd variable anyway and I could always create my own function if I really wanted to. Just wondered if something like that exists?
Update: Using a 3rd variable or wrapping it in a function is the best solution. It's clean and simple. I asked the question more out of curiosity and the answer chosen was kind of 'the next best alternative'. Just use a 3rd variable.
Code: Swap two variables value without using third variable php $a = 15; $b = 276; echo "\nBefore swapping: ". $a . ',' . $b; list($a, $b) = array($b, $a); echo "\nAfter swapping: ".
Swapping two number in C programming language means exchanging the values of two variables. Suppose you have two variable var1 & var2. Value of var1 is 20 & value of var2 is 40. So, after swapping the value of var1 will become 40 & value of var 2 will become 20.
There isn't a built-in function. Use swap3()
as mentioned below.
As many mentioned, there are multiple ways to do this, most noticable are these 4 methods:
function swap1(&$x, &$y) { // Warning: works correctly with numbers ONLY! $x ^= $y ^= $x ^= $y; } function swap2(&$x, &$y) { list($x,$y) = array($y, $x); } function swap3(&$x, &$y) { $tmp=$x; $x=$y; $y=$tmp; } function swap4(&$x, &$y) { extract(array('x' => $y, 'y' => $x)); }
I tested the 4 methods under a for-loop of 1000 iterations, to find the fastest of them:
swap1()
= scored approximate average of 0.19 seconds.swap2()
= scored approximate average of 0.42 seconds. swap3()
= scored approximate average of 0.16 seconds. Winner! swap4()
= scored approximate average of 0.73 seconds.And for readability, I find swap3()
is better than the other functions.
swap2()
and swap4()
are always slower than the other ones because of the function call.swap1()
and swap3()
both performance speed are very similar, but most of the time swap3()
is slightly faster.swap1()
works only with numbers!If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With