今天去面试有一道题,怎样不用第三方变量和数组交换二个变量的值,在那里想了半天也没想出么样实现-_-!!,回来后查了下资料,可以用位运算中的异或运算。
下面是试例代码
<?php $a = 'str1'; $b = 'str2'; echo "交换前:\$a = {$a}; \$b = {$b};"; $b = $b ^ $a; $a = $b ^ $a; $b = $b ^ $a; echo "交换后:\$a = {$a}; \$b = {$b};"; ?>
此算法能够实现是由异或运算的特点决定的,通过异或运算能够使数据中的某些位翻转,其他位不变。这就意味着任意一个数与任意一个给定的值连续异或两次,值不变。
囧rz…这个。。我也搞不到。。
[回复]
现在该显摆显摆ruby了,ruby里有所谓的并行赋值,so
a,b = b,a
更为强大的赋值:
c=[1,2]
a,b = *c #a=1,b=2
*a=1,2,3 #a=[1,2,3]
[回复]