这也算是一道较为经典的PHP面试题了。题目是不使用第三个变量交换两个变量的值。
方法1:字符串截取法
<?php
$a = 'abc';
$b = 'def';
//初始两个变量值
echo $a . '/' . $b . "<br />";
//连接字符串
$a = $a . $b;
//截取字符串
$b = substr($a, 0, strlen($a) - strlen($b));
$a = substr($a,strlen($b));
//交换后的两个变量值
echo $a . '/' . $b;
?>
方法2:数组元素法
<?php
$a = 'abc';
$b = 'def';
//初始两个变量值
echo $a . '/' . $b . "<br />";
//将变量放到数组中
$a = array($a, $b);
//获取数组的元素
$b = $a[0];
$a = $a[1];
//交换后的两个变量值
echo $a . '/' . $b;
?>
方法3:按位异或法
<?php
$a = 'abc';
$b = 'def';
//初始两个变量值
echo $a . '/' . $b . "<br />";
//使用异或运算
$a = $a^$b;
$b = $b^$a;
$a = $a^$b;
//交换后的两个变量值
echo $a . '/' . $b;
?>
注意:经测试,这个方法只能处理长度相同的两个变量,如果长度不相同,将得不到正确的结果。
方法5:list($a,$b)=array($b,$a);