Computer >> Máy Tính >  >> Lập trình >> PHP

Pass By Reference và Pass By Value trong PHP là gì?


Trong bài viết này, chúng ta sẽ tìm hiểu về truyền theo giá trị và truyền theo tham chiếu trong PHP.

Bây giờ, chúng ta hãy hiểu chi tiết hai khái niệm này.

Trong PHP nói chung, chúng tôi đã làm theo để chuyển các đối số cho hàm với cách tiếp cận truyền theo giá trị. Chúng tôi đang thực hiện theo phương pháp này vì nếu giá trị của đối số bên trong hàm bị thay đổi, thì nó sẽ không bị thay đổi bên ngoài hàm.

Trong một số trường hợp, chúng ta có thể cần sửa đổi các đối số của hàm, Vì vậy, để cho phép một hàm sửa đổi các đối số của nó, chúng phải được chuyển qua tham chiếu.

Hãy bắt đầu với thông qua tham chiếu. Như nó đã được đề cập, chúng ta có thể chuyển một biến bằng cách tham chiếu đến một hàm để hàm có thể sửa đổi biến. Để bắt đầu quá trình chuyển các tham số được truyền bằng tham chiếu, hãy thêm dấu và (&) vào tên đối số trong định nghĩa hàm.

Ví dụ

Hãy kiểm tra điều này bằng một ví dụ đơn giản.

<?php
   function calculate(&$a){
      $a++;
   }
   $a=5;
   calculate($a);
   echo $a;
?>

Đầu ra

6

Giải thích

Ở đây chúng ta đã khai báo biến $ a và chuyển nó dưới dạng tham chiếu đến hàm tính toán (). Vì vậy, như nguyên tắc đã nói nếu giá trị của $ a được thay đổi bên trong hàm thì nó cũng sẽ thay đổi bên ngoài hàm.

Lưu ý

Không có dấu hiệu tham chiếu nào trên một lệnh gọi hàm - chỉ trên các định nghĩa hàm. Chỉ riêng định nghĩa hàm là đủ để chuyển đối số một cách chính xác bằng tham chiếu. Điều này không được chấp nhận trong phiên bản PHP 5.4 khi bạn sử dụng để tính toán (&$ a); nó tạo ra một lỗi.

Ví dụ

Hãy thử nghiệm một ví dụ để hiểu giá trị chuyển.

Hàm
<?php
   function calculate($a){
      $a++;
   echo $a."<br/>";
   }
   $a=5;
   calculate($a);
   echo $a;
?>

Đầu ra

6
5

Giải thích

Ở đây chúng ta đã chuyển giá trị cho hàm tính () dưới dạng truyền theo giá trị. Giá trị của nó được thay đổi bên trong hàm nhưng điều đó không được phản ánh bên ngoài hàm. Giá trị của biến vẫn giữ nguyên bên ngoài hàm.