PHP – 交换变量


PHP 不提供任何内置函数,您可以使用该函数来交换或交换两个变量的值。但是,您可以使用一些技术来执行交换。

最直接的方法之一是使用第三个变量作为临时占位符,以便于交换。按特定顺序使用算术运算符也非常有效。您还可以使用二进制 XOR 运算符进行交换。在本章中,我们将在 PHP 中实现这些交换技术

临时变量

从逻辑上讲,这是最明显和最简单的方法。要交换 “a” 和 “b” 的值,请使用第三个变量 “c”。将 “a” 的值分配给 “c”,用现有的 “b” 值覆盖 “a”,然后将 “b” 设置为存储在 “c” 中的 “a” 的早期值。

例子

请看下面的例子 -


<?php
   $a = 10;
   $b = 20;
   echo "交换前 - \$a = $a, \$b = $b". PHP_EOL;
   $c = $a; 
   $a = $b;
   $b = $c;
   echo "交换后 - \$a = $a, \$b = $b". PHP_EOL;
?>

它将产生以下输出 -

交换前 - $a = 10, $b = 20
交换后 - $a = 20, $b = 10

使用加法 (+) 运算符

此解决方案利用了以下事实:从两个数字之和中减去一个数字会返回第二个数字。换句话说,“sum(a+b) – a” 等于 “b”,反之亦然。

例子

让我们利用这个属性来交换 “a” 和 “b” −


<?php
   $a = 10;
   $b = 20;
   echo "交换前 - \$a = $a, \$b = $b". PHP_EOL;
   $a = $a + $b;
   $b = $a - $b;
   $a = $a - $b;
   echo "交换后 - \$a = $a, \$b = $b". PHP_EOL;
?>

它将产生以下输出 -

交换前 - $a = 10, $b = 20
交换后 - $a = 20, $b = 10

您还可以使用类似方式使用其他算术运算符 – 减法 (-)乘法 (*)除法 (/) 来执行交换。

使用 list() 函数

PHP 的 list() 函数将数组解包到单独的变量中。这有助于我们在两个变量之间执行交换的目标。为此,请构建一个 “a” 和 “b” 的数组,然后将其解压缩为 “b” 和 “a” 变量,以获得具有互换值的 “a” 和 “b”。

例子

请看下面的例子 -


<?php
   $a = 10;
   $b = 20;
   echo "交换前 - \$a = $a, \$b = $b". PHP_EOL;
   $arr = [$a, $b];
   list($b, $a) = $arr;
   echo "交换后 - \$a = $a, \$b = $b". PHP_EOL;
?>

它将产生以下输出 -

交换前 - $a = 10, $b = 20
交换后 - $a = 20, $b = 10

按位 XOR

按位 XOR (^) 运算符也可用于交换两个变量 “x” 和 “y” 的值。当两个操作数中相同位置的两个位中的一个为 1 时,它返回 1,否则返回 0。

例子

请看下面的例子 -


<?php
   $a = 10;
   $b = 20;
   echo "交换前 - \$a = $a, \$b = $b". PHP_EOL;
   $a = $a ^ $b;
   $b = $a ^ $b;
   $a = $a ^ $b;
   echo "交换后 - \$a = $a, \$b = $b". PHP_EOL;
?>

它将产生以下输出 -

交换前 - $a = 10, $b = 20
交换后 - $a = 20, $b = 10