2013-08-21 73 views
7

我想分享1个问题,这个问题在面试中大部分时间都被问及我无法回答该问题,但最终我找到了答案:在php中不使用第三个变量交换两个变量值

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

+1

@ShankarDamodaran糟糕对不起,我不知道它,我以为它不是在StackOverflow中,这就是为什么我分享它! – Jay

+0

没问题。很高兴你得到了解决方案。 –

+0

我也有过这种采访,他们是非常愚蠢的海事组织,他们怎么能判断你在这个地区有多么优秀,这些琐碎的事情呢? – itsjavi

回答

32

此方法将任何变量类型工作:

$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 
+2

$ b = $ a + $ b - ($ a = $ b); –

+0

伟大的工作杰伊..! – Ritesh

+0

@mjolnic变量和对象是不同的还是相同的? ,这里的问题是关于变量而不是对象。 –

8

当然你想要XOR swap algorithm?至少对于数字变量。

传统交换需要使用临时存储变量 变量。然而,使用XOR交换算法,不需要临时存储器 。该算法如下:

X:= X XORŸ

Y:= X XORŸ

X:= X XORŸ

虽然我从来没有见过它使用在真实场景(超出汇编工作)

+0

实现起来太困难了,因为我们想要简单操作的简单方法,比如变量交换。 – Raptor

+3

$ a xor $ b有多难? –

+0

Downvoted为什么? –

相关问题