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
交换后 - $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
交换后 - $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
交换后 - $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
交换后 - $a = 20, $b = 10