我想分享一个问题,这个问题在面试中大部分时间都会被问到,但我无法回答这个问题,但最终我找到了答案:
如何在不使用第三个变量的情况下交换2个变量的值??
此方法适用于任何变量类型:
$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
您肯定想要XOR交换算法吗?至少对于数值变量。
传统的交换需要使用临时存储器变量然而,使用XOR交换算法,没有临时存储需要。算法如下:
X:=X XOR Y
Y:=X XOR Y
X:=X XOR Y
尽管我从未见过它在实际场景中使用(除了汇编工作)