我想分享一个在面试中大部分时间被问到的问题,我无法回答这个问题,但最终我找到了答案:
如何在不使用第三个变量的情况下交换 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
虽然我从未见过它在实际场景中使用过(除了汇编工作之外)