PHP不使用第三个变量交换两个变量的值

// 字符串版本 结合使用substr,strlen两个方法实现
$a = "a";
$b = "b";
echo '交换前 $a:' . $a . ',$b:' . $b . '<br />';
$a .= $b;
$b = substr($a, 0, (strlen($a) - strlen($b)));
$a = substr($a, strlen($b));
echo '交换后$a:' . $a . ',$b:' . $b . '<br />';

echo '-----------------------<br/>';

// 字符串版本 使用str_replace方法实现
$a = "a";
$b = "b";
echo '交换前 $a:' . $a . ',$b:' . $b . '<br />';
$a .= $b;
$b = str_replace($b, "", $a);
$a = str_replace($b, "", $a);
echo '交换后$a:' . $a . ',$b:' . $b . '<br />';

echo '-----------------------<br/>';

// 字符串版本 结合使用list方法和array实现
$a = "a";
$b = "b";
echo '交换前 $a:' . $a . ',$b:' . $b . '<br />';
list($b, $a) = array($a, $b);
echo '交换后$a:' . $a . ',$b:' . $b . '<br />';

echo '-----------------------<br/>';

// 字符串和数字都适用 使用异或运算
$a = 'a';
$b = 'b';
echo '交换前 $a:' . $a . ',$b:' . $b . '<br />';
$a = $a ^ $b;
$b = $b ^ $a;
$a = $a ^ $b;
echo '交换后$a:' . $a . ',$b:' . $b . '<br />';

echo '-----------------------<br/>';

// 只适用于数字
$a = 3;
$b = 5;
echo '交换前 $a:' . $a . ',$b:' . $b . '<br />';
$a = $a + $b;
$b = $a - $b;
$a = $a - $b;
echo '交换后$a:' . $a . ',$b:' . $b . '<br />';