无需使用任何临时变量即可交换两个变量的值。该方法涉及使用 +、*、/ 和按位等运算符。
方法 1:使用 + 运算符
在下面的示例中,+ 运算符用于交换两个变量 x 和 y 的值。
<?php
function swap($x, $y) {
echo "交换前.\n";
echo "x = $x \n";
echo "y = $y \n";
//交换技术
$x = $x + $y;
$y = $x - $y;
$x = $x - $y;
echo "交换后.\n";
echo "x = $x \n";
echo "y = $y \n";
}
swap(10, 25);
?>
上面的代码将给出以下输出:
交换前.
x = 10
y = 25
交换后.
x = 25
y = 10
方法 2:使用 * 运算符
与 + 运算符一样,* 运算符还可以用于交换两个变量 x 和 y 的值。
<?php
function swap($x, $y) {
echo "交换前.\n";
echo "x = $x \n";
echo "y = $y \n";
//交换技术
$x = $x * $y;
$y = $x / $y;
$x = $x / $y;
echo "交换后.\n";
echo "x = $x \n";
echo "y = $y \n";
}
swap(10, 25);
?>
上面的代码将给出以下输出:
交换前.
x = 10
y = 25
交换后.
x = 25
y = 10
方法3:使用/运算符
同样,/运算符也可以用来交换两个值变量x和y。
<?php
function swap($x, $y) {
echo "交换前.\n";
echo "x = $x \n";
echo "y = $y \n";
//交换技术
$x = $x / $y;
$y = $x * $y;
$x = $y / $x;
echo "交换后.\n";
echo "x = $x \n";
echo "y = $y \n";
}
swap(10, 25);
?>
上面的代码将给出以下输出:
交换前.
x = 10
y = 25
交换后.
x = 25
y = 10
方法4 : 使用按位运算符
按位XOR (^)运算符还可以用于交换两个变量x和是。当两个操作数中相同位置的两位中的一位为 1 时,返回 1,否则返回 0。
<?php
function swap($x, $y) {
echo "交换前.\n";
echo "x = $x \n";
echo "y = $y \n";
//交换技术
$x = $x ^ $y;
$y = $x ^ $y;
$x = $x ^ $y;
echo "交换后.\n";
echo "x = $x \n";
echo "y = $y \n";
}
swap(10, 25);
?>
上面的代码将给出以下输出:
交换前.
x = 10
y = 25
交换后.
x = 25
y = 10
使用上述方法的缺点
- 如果其中一个变量的值为 0,则基于乘法和除法的方法会失败。
- 基于加法的方法可能会因算术溢出而失败。 。如果x和y太大,对操作数执行的操作可能会导致整数超出范围。