这时候,第一时间想到的是,借助第三个变量来实现变量交换。
1
2
3
4
5
6
function swap(&$a,&$b)
{
$tmp = $a;
$a = $b;
$b = $tmp;
}
那如果不允许使用第三方变量呢?可以使用加法算法和减法算法来实现!
1
2
3
4
5
6
7
8
9
10
11
12
13
function addition_swap(&$a,&$b)
{
$a = $a + $b;
$b = $a - $b;
$a = $a - $b;
}
function subtraction_swap(&$a,&$b)
{
$a = $a - $b;
$b = $a + $b;
$a = $b - $a;
}
以上方法仅适用于变量的数据类型是整型和浮点型,其中浮点型还特别需要注意精度(另一篇文章再探讨精度问题)。
可以用异或逻辑运算来交换两个 等长 的字符串:
1
2
3
4
5
6
function XOR_swap(&$a,&$b)
{
$a = $a ^ $b;
$b = $a ^ $b;
$a = $b ^ $a;
}