我想分享一个问题,这个问题大部分时间都是在采访中提出来的,我无法回答这个问题,但最后我找到了答案:
如何在不使用第三个变量的情况下交换2个变量值?
答案 0 :(得分:39)
此方法适用于任何变量类型:
$a = 5;
$b = 6;
list($a, $b) = array($b, $a);
print $a . ',' . $b;
输出:
6,5
另一种简单的方法(仅适用于数字,而不是字符串/数组/等)是
$a = $a + $b; // 5 + 6 = 11
$b = $a - $b; // 11 - 6 = 5
$a = $a - $b; // 11 - 5 = 6
print $a . ',' . $b;
输出:
6,5
答案 1 :(得分:8)
当然你想要XOR swap algorithm?至少对于数字变量。
传统的交换需要使用临时存储 变量。但是,使用XOR交换算法,没有临时存储 需要。算法如下:
X:= X XOR Y
Y:= X XOR Y
X:= X XOR Y
虽然我从未见过它在真实场景中使用过(超出汇编程序工作)