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

时间:2013-08-21 11:40:16

标签: php

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

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

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

虽然我从未见过它在真实场景中使用过(超出汇编程序工作)