PHP – Swapping Variables

PHP không cung cấp bất kỳ hàm tích hợp nào mà bạn có thể sử dụng để hoán đổi hoặc trao đổi giá trị của hai biến. Tuy nhiên, có một số kỹ thuật mà bạn có thể sử dụng để thực hiện việc hoán đổi.

Một trong những phương pháp đơn giản nhất là sử dụng một biến thứ ba làm nơi tạm thời để hỗ trợ việc hoán đổi. Sử dụng các toán tử số học theo một thứ tự cụ thể cũng rất hiệu quả. Bạn cũng có thể sử dụng toán tử XOR nhị phân cho mục đích hoán đổi. Trong chương này, chúng ta sẽ triển khai những kỹ thuật hoán đổi này trong PHP.

Temporary Variable

Cách tiếp cận này về mặt logic là rõ ràng nhất và đơn giản nhất. Để hoán đổi giá trị của "a" và "b", sử dụng một biến thứ ba "c". Gán giá trị của "a" cho "c", ghi đè "a" bằng giá trị hiện có của "b" và sau đó gán "b" bằng giá trị trước đó của "a" đã được lưu trữ trong "c".

Example

Hãy xem xét ví dụ sau đây −

<?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;
?>

Nó sẽ tạo ra output

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

Using addition (+) Operator

Giải pháp này tận dụng thực tế rằng việc trừ một số khỏi tổng của hai số sẽ trả về số thứ hai. Nói cách khác, "tổng(a+b) – a" bằng "b" và ngược lại.

Example

Hãy tận dụng thuộc tính này để hoán đổi "a" và "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;
?>

Nó sẽ tạo ra output

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

Bạn cũng có thể sử dụng các toán tử số học khác – phép trừ (-), phép nhân (*) và phép chia (/) theo cách tương tự để thực hiện việc hoán đổi.

Using list() Function

Hàm list() trong PHP giải nén mảng thành các biến riêng biệt. Điều này giúp chúng ta đạt được mục tiêu hoán đổi giữa hai biến. Để làm điều đó, hãy xây dựng một mảng chứa "a" và "b", sau đó giải nén nó thành các biến "b" và "a" để nhận được "a" và "b" với các giá trị đã bị hoán đổi.

Example

Hãy xem xét ví dụ sau đây −

<?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;
?>

Nó sẽ tạo ra output

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

Bitwise XOR

Toán tử XOR (^) theo bit cũng có thể được sử dụng để hoán đổi giá trị của hai biến "x" và "y". Nó trả về 1 khi một trong hai bit ở cùng vị trí trong cả hai toán hạng là 1, nếu không thì trả về 0.

Example

Hãy xem xét ví dụ sau đây −

<?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;
?>

Nó sẽ tạo ra output

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