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
廣告