Tham chiếu và Tham trị trong PHP, bài viết trước chúng ta đã cùng Tìm hiểu Hàm trong PHP – cách dùng Hàm trong PHP. Vậy tham chiếu và tham trị là gì, liên quan như thế nào với Hàm, tham chiếu và tham trị có cần thiết hay không? Hãy cùng làm rõ tại bài viết này nhé.
Tham chiếu và Tham trị trong PHP
Trong PHP, khi truyền biến vào một hàm, chúng ta có thể truyền bằng 2 cách là tham trị (pass by value) hoặc tham chiếu (pass by reference). Hai cách này có sự khác biệt quan trọng về cách biến được truyền và sự thay đổi trong hàm.
1. Tham trị (Pass by Value):
Khi truyền một biến bằng tham trị vào một hàm, hàm sẽ tạo một bản sao của giá trị của biến này. Bất kỳ thay đổi nào được thực hiện trên biến đó trong hàm sẽ không ảnh hưởng đến giá trị của biến gốc bên ngoài hàm(chỉ lấy giá trị của biến và truyền giá trị biến đó vào hàm).
Ví dụ:
<?php
function increment($num) {
$num++;
echo "Inside function: $num<br>";
}
$x = 5;
increment($x); //Kết quả // Kết quả: 6
echo "Outside function: $x"; // Kết quả : 5
Trong ví dụ này, ta khai báo biến $x bằng 5, trong hàm increment ta đã tăng giá trị của $x lên 1 thành 6, tuy nhiên vì ta truyền biến $x vào hàm với tham trị nên sau khi thoát khỏi hàm biến $x gốc vẫn có giá trị là 5.
2. Tham chiếu (Pass by Reference):
Khi truyền một biến bằng tham chiếu vào một hàm, hàm sẽ làm việc trực tiếp trên biến gốc, không tạo ra bản sao nào. Điều này có nghĩa là bất kỳ thay đổi nào được thực hiện trên biến trong hàm cũng sẽ ảnh hưởng đến biến gốc bên ngoài hàm (tức là ta truyền thẳng địa chỉ ô nhớ của biến đó vào hàm).
Ví dụ: Vẫn với ví dụ trên, tuy nhiên lúc này ta lại dùng tham chiếu.
<?php
//Dâu & để truyền tham chiếu
function increment(&$num) {
$num++;
echo "Inside function: $num<br>";
}
$x = 5;
increment($x); //Kết quả 6
echo "Outside function: $x"; //Kết quả 6
Lúc này cả hai giá trị in ra màn hình đều sẽ là 6.
Tóm lại, truyền Tham trị giá trị biến sẽ không bị thay đổi dù biến đó bị thay đổi trong hàm, ngược lại với Tham chiếu giá trị biến sẽ bị thay đổi cùng. Và để truyền tham chiếu thì ta cần có dấu & đằng trước biến đó.
[XEM TẤT CẢ BÀI VIẾT CHUYÊN MỤC HƯỚNG DẪN PHP TẠI ĐÂY]
XEM THÊM Vòng lặp foreach trong php – Vòng lặp duyệt phần tử mảng Sự khác nhau giữa toán tử so sánh “==” và “===” trong PHP Mảng (Array) trong PHP – Tìm hiểu về mảng trong lập trình PHP MySql là gì? Tìm hiểu về hệ quản trị cơ sở dữ liệu MySql Tìm hiểu câu lệnh IF, IF ELSE, ELSE trong PHP Cấu Trúc Rẽ Nhánh Switch … Case trong PHP | Học PHP cơ bản Hiểu vòng lặp for, while, do…while ngôn ngữ PHP trong 5 phút Mã nguồn website thương mại điện tử – Cửa hàng Chương Mobile