PHP – 交换变量



PHP 没有提供任何内置函数来交换或互换两个变量的值。但是,有一些技巧可以用来执行交换。

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

临时变量

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

示例

请看下面的例子 -

<?php
   $a = 10;
   $b = 20;
   echo "Before swapping - \$a = $a, \$b = $b". PHP_EOL;
   $c = $a; 
   $a = $b;
   $b = $c;
   echo "After swapping - \$a = $a, \$b = $b". PHP_EOL;
?>

它将产生以下输出 -

Before swapping - $a = 10, $b = 20
After swapping - $a = 20, $b = 10

使用加法 (+) 运算符

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

示例

让我们利用此属性来交换 "a" 和 "b" -

<?php
   $a = 10;
   $b = 20;
   echo "Before swapping - \$a = $a, \$b = $b". PHP_EOL;
   $a = $a + $b;
   $b = $a - $b;
   $a = $a - $b;
   echo "After swapping - \$a = $a, \$b = $b". PHP_EOL;
?>

它将产生以下输出 -

Before swapping - $a = 10, $b = 20
After swapping - $a = 20, $b = 10

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

使用 list() 函数

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

示例

请看下面的例子 -

<?php
   $a = 10;
   $b = 20;
   echo "Before swapping - \$a = $a, \$b = $b". PHP_EOL;
   $arr = [$a, $b];
   list($b, $a) = $arr;
   echo "After swapping - \$a = $a, \$b = $b". PHP_EOL;
?>

它将产生以下输出 -

Before swapping - $a = 10, $b = 20
After swapping - $a = 20, $b = 10

按位 XOR

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

示例

请看下面的例子 -

<?php
   $a = 10;
   $b = 20;
   echo "Before swapping - \$a = $a, \$b = $b". PHP_EOL;
   $a = $a ^ $b;
   $b = $a ^ $b;
   $a = $a ^ $b;
   echo "After swapping - \$a = $a, \$b = $b". PHP_EOL;
?>

它将产生以下输出 -

Before swapping - $a = 10, $b = 20
After swapping - $a = 20, $b = 10
广告