Поменять местами значения переменных в PHP

Существует красивое и элегантное решение в одну строку:

list($a, $b) = [$b, $a];

А для PHP версий 5.3 и старше можно воспользоваться сокращённым вариантом:

[$a, $b] = [$b, $a];

Что более читаемо и проще, чем классическое:

$tmp = $a;
$a = $b;
$b = $tmp;

Кроме того, таким образом можно поменять местами значения более чем двух переменных за раз:

[$a, $b, $c] = [$c, $b, $a];

Существует ещё несколько классических решений, которые работают только с целочисленными переменными. Например, с помощью XOR:

$a = $a ^ $b; 
$b = $b ^ $a; 
$a = $a ^ $b;

Либо вариант со сложением и вычитанием:

$a = $a + $b; 
$b = $a - $b; 
$a = $a - $b;

В случае со сложением можно выйти за диапазон допустимых значений если значения переменных будут достаточно большими. XOR решает эту проблему, но необходимо понимать что это работает с int, а для string или каких-то других типов придётся использовать другой подход.

Как поменять местами значения переменных в других языках

Для Python и Ruby будет такое элегантное решение:

a, b = b, a

А для PHP и Java знатоки предлагают такой вариант:

a = a + b - (b = a);

Для прочих языков можно попробовать воспользоваться такими решениями:

a += b - (b = a)
a ^= b ^= a ^= b
a ^= b ^ (b = a)

Также существует бесконечная масса вариаций этих решений, где добавляются дополнительные операции и необоснованно решение усложняется.