Taylor - 7 months ago 37

PHP Question

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?

Answer

There isn't a built-in function.

As many mentioned, there are 3 methods to do this:

```
function swap1(&$x,&$y) {
$x ^= $y ^= $x ^= $y;
}
function swap2(&$x,&$y) {
list($x,$y) = array($y,$x);
}
function swap3(&$x,&$y) {
$tmp=$x;
$x=$y;
$y=$tmp;
}
```

I tested the 3 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.

And for readability/writability, IMO I find swap3 is better than the other 2 functions.