谁能告诉我为什么这个功能可以工作?

who can tell me why can this function work?

function swap(&$a,&$b)
{

    $a=$a^$b;
    $b=$a^$b;
    $a=$a^$b;

}

RT,为什么可以交换两个数字或字符串?

这称为异或交换。 XOR 有有趣的 属性。

  • 异或 A = 0
  • A 异或 0 = A

基本上,

$a = $a ^ $b;
$b = $a ^ $b;  // which is $b = a XOR b XOR b = a
$a = $a ^ $b;  // which is $a = a XOR b XOR a = b

但是,我不建议您使用异或交换。它的性能不如使用临时变量的交换。如果每个人都对这个可爱的神奇 XOR 运算符感兴趣,那么有一些基于相同概念的有趣算法:

如果你的C/C++概念清楚,可以简单理解。

^ 作为 XOR 工作(希望您已经了解了一些关于数字电子 OR、AND 等的知识)

简单假设一下

$a=20;
$b=30;

function swap($a,$b) {
$a=$a*$b;
$b=$a/$b;
$a=$a/$b;
}

输出: $a=30 和 $b=20

您可以通过多种方式使用它,例如

function swap($a,$b) {
$a=$a+$b;
$b=$a-$b;
$a=$a-$b;
}