交换两个变量值而不使用php中的第三个变量

Jay*_*Jay 8 php

我想分享一个问题,这个问题大部分时间都是在采访中提出来的,我无法回答这个问题,但最后我找到了答案:

如何在不使用第三个变量的情况下交换2个变量值?

Jay*_*Jay 44

此方法适用于任何变量类型:

$a = 5;
$b = 6;
list($a, $b) = array($b, $a);
print $a . ',' . $b;
Run Code Online (Sandbox Code Playgroud)

输出:

6,5
Run Code Online (Sandbox Code Playgroud)

另一种简单的方法(仅适用于数字,而不是字符串/数组/等)

$a =  $a + $b;  // 5 + 6 = 11
$b = $a - $b;   // 11 - 6 = 5
$a = $a - $b;  // 11 - 5 = 6
print $a . ',' . $b;
Run Code Online (Sandbox Code Playgroud)

输出:

6,5
Run Code Online (Sandbox Code Playgroud)

  • $ b = $ a + $ b - ($ a = $ b); (2认同)

Bri*_*new 9

当然你想要XOR交换算法?至少对于数字变量.

传统的交换需要使用临时存储变量.但是,使用XOR交换算法不需要临时存储.算法如下:

X:= X XOR Y.

Y:= X XOR Y.

X:= X XOR Y.

虽然我从未见过它在真实场景中使用过(除了汇编工作)

  • $ a xor $ b有多难? (3认同)