Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a PHP function for swapping the values of two variables?

Tags:

function

php

swap

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.

like image 426
Taylor Avatar asked Aug 22 '10 13:08

Taylor


People also ask

How can we swap values of two variables without using third variable in PHP?

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: ".

Can you exchange two values in different variables?

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.


1 Answers

TL;DR

There isn't a built-in function. Use swap3() as mentioned below.

Summary

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.

Note

  • 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.
  • Warning: swap1() works only with numbers!
like image 113
evilReiko Avatar answered Sep 22 '22 19:09

evilReiko