代潇瑞博客

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

| 点击次数:26197

“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;

?>

说明:这个方法是网上看到的,我仔细试了一下,发现这个居然是有BUG的。用次方法只能交换字符相同的两个字符串型的变量,不然结果是不正确的。


方法五:使用数组


<?php

$a = "fsdfds";

$b = "xiaorui";

$a = array($b, $b = $a)[0];

echo $a."-".$b;

?>


以上是本人总结的五个,方法肯定不止这些。如果你有更好的方法,请不要吝惜,在下面的评论框中分享出来,大家一起来互相的学习!

【相关推荐】

触屏版 | 电脑版

Copyright © 2013 代潇瑞博客手机版

QQ: 446673330

粤ICP备13071969号-1