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.
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".
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
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.
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.
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.
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
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.
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