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

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

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

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

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

Существует ещё несколько классических решений, которые работают только с целочисленными переменными. Например, с помощью 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)

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *