如果能用第三个变量那么问题就很简单了
$a=2; $b=3; $c=$a; $b=$a; $a=$c;
搞定
现在不允许有$c, 那可咋整呢
方案一 用数组
$a=2;$b=3;
$a=[$a, $b];
$b=$a[0];
$a=$a[1];
或者
$a=2;$b=3;
$a=[$a, $b];
$b=array_shift($a);
$a=array_shift($a);
方案二 用加减法
$a=2;$b=3;
$a += $b;
$b = $a-$b;
$a = $a-$b;
方案三 用乘除法
$a=2;$b=3;
$a *= $b;
$b = $a/$b;
$a = $a/$b;
方案四 用异或
$a=2;$b=3;
$a ^= $b;
$b ^= $a;
$a ^= $b;
这个稍微解释一下
一个变量偶数次异或同一个数字则值不变
譬如: (3^7)^7=3
首先 3^7=4
3的二进制 011
7的二进制 ^111
---------------
异或运算的结果 100 = 4
然后 4^7=3
100
^111
---------------
011 = 3
同理
7^(3^7) = 3
7^3^7^7 = 4
7^3^7^7^7 = 3
(2^3)^2 = 3
…
$a=2;$b=3;
$a ^= $b; // a=2^3
$b ^= $a; // (b = (2^3)^3) == 2
$a ^= $b; // (a = (2^3)^2) == 3