首页 交换两个变量的值
文章
取消

交换两个变量的值

  这时候,第一时间想到的是,借助第三个变量来实现变量交换。

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

参考文献

交换两个变量的值 - 简书

PHP: Floating point numbers - Manual

本文由作者按照 CC BY 4.0 进行授权