总结PHP不用第三个变量交换两个变量的值的几种方法

“PHP不用第三个变量交换两个变量的值”这个题看到过好多次了,看来面试确实喜欢考这道题。今天,对于这个题目,我自己总结了几种方法,可能不全,大家来互相补充。


方法一:使用字符串截取


<?php

$a = "fsdfds";

$b = "xiaorui";

$a = $a.$b;

$b = substr($a,0,strlen($a)-strlen($b));

$a = substr($a,strlen($b));

echo $a."-".$b;

?>


方法二:使用list()


<?php

$a = "fsdfds";

$b = "xiaorui";

list($a,$b) = array($b,$a);

echo $a."-".$b;

?>


方法三:使用数组分割


<?php

$a = "fsdfds";

$b = "xiaorui";

$b = $a."#$".$b;

$b = explode("#$",$b);

$a = $b[1];

$b = $b[0];

echo $a."-".$b;

?>


说明:这种方法也可以用于交换两个变量的值,但是这个方法听说好像不太标准,因为有人说这里的数组$b也算是一个新变量了(我有点不同意,看怎么理解了)。


方法四:使用异或运算


<?php

$a = "fsdfds";

$b = "xiaorui";

$a = $a^$b;

$b = $b^$a;

$a = $a^$b;

echo $a."-".$b;

?>