PHP Call By Reference – Truyền tham số cho hàm trong PHP

PHP là một ngôn ngữ lập trình phổ biến được sử dụng cho các ứng dụng web. Trong PHP, chúng ta có thể truyền đối số (argument) cho một hàm (function) bằng cách gọi theo giá trị hoặc theo tham chiếu (call by reference). Trong bài viết này, chúng ta sẽ tìm hiểu về PHP Call By Reference, cùng với ưu và nhược điểm của nó.

Lập Trình Viên mời bạn cùng tham khảo chi tiết nội dung bên dưới. Bài viết này nằm trong chuyên đề hướng dẫn PHP từ cơ bản đến nâng cao tại dự án Phát Triển Website.

Tổng quan PHP Call By Reference

Trong PHP, khi chúng ta truyền đối số cho một hàm, nó có thể được truyền theo hai cách: call by value hoặc call by reference. Khi truyền đối số theo call by value, giá trị của biến được sao chép vào một biến tạm thời trong hàm. Đ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 sẽ không ảnh hưởng đến giá trị ban đầu của biến.

Tuy nhiên, khi truyền đối số theo call by reference, tham chiếu đến biến được truyền vào hàm. Đ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 sẽ ảnh hưởng đến giá trị ban đầu của biến.

PHP Call By Reference là gì

PHP Call By Reference là phương thức truyền đối số vào một hàm bằng cách truyền theo tham chiếu. Khi sử dụng phương thức này, chúng ta có thể thay đổi giá trị của biến được truyền vào trong hàm.

Để sử dụng PHP Call By Reference, ta sử dụng ký hiệu “&” trước tên biến. Ví dụ:

function increment(&$number) {
    $number++;
}
$var = 10;
increment($var);
echo $var; // Output: 11

Trong ví dụ trên, chúng ta truyền biến $var vào hàm increment() theo call by reference bằng cách thêm ký hiệu “&” trước tên biến. Sau đó, giá trị của biến $var được tăng lên một đơn vị bên trong hàm increment(). Sau khi hàm được thực thi, giá trị của biến $var đã được thay đổi và được in ra màn hình.

Hướng dẫn PHP Call By Reference

Để sử dụng PHP Call By Reference, chúng ta chỉ cần thêm ký hiệu “&” trước tên biến khi khai báo đối số trong hàm:

function myFunction(&$arg1, &$arg2) {
    // Code here
}

Sau đó, chúng ta có thể truyền đối số vào hàm theo call by reference:

$var1 = 1;
$var2 = 2;
myFunction($var1, $var2);
echo $var1; // Output: ?
echo $var2; // Output: ?

Trong ví dụ trên, $var1 và $var2 được truyền vào hàm myFunction() theo call by reference. Sau khi hàm được thực thi, giá trị của hai biến này có thể đã bị thay đổi.

Ví dụ PHP Call By Reference

Call by reference là một cách để truyền tham số cho hàm trong PHP. Khi truyền tham số theo tham chiếu, tham chiếu đến biến của hàm sẽ được truyền vào hàm. Điều này có nghĩa là bất kỳ thay đổi nào được thực hiện đối với giá trị của tham số trong hàm cũng sẽ ảnh hưởng đến giá trị của tham số trong mã gọi hàm.

Cách sử dụng

Để truyền tham số theo tham chiếu trong PHP, chúng ta sử dụng ký tự & trước tên tham số.

Ví dụ

Dưới đây là một ví dụ về cách sử dụng call by reference:

<?php

// Định nghĩa hàm
function changeValue(&$a) {

  // Thân hàm
  $a += 10;

}

// Gọi hàm
$a = 5;
changeValue($a);

// In ra kết quả
echo $a;

?>

Ví dụ này sẽ in ra giá trị 15.

Trong ví dụ này, tham chiếu đến biến $a sẽ được truyền vào hàm. Bất kỳ thay đổi nào được thực hiện đối với giá trị của biến $a trong hàm cũng sẽ ảnh hưởng đến giá trị của biến $a trong mã gọi hàm.

Ví dụ

Bạn có thể sử dụng PHP Call By Reference để xử lý một mảng (array) trong PHP:

function addToArray(&$array, $value) {
    array_push($array, $value);
}

$myArray = array(1, 2, 3);
addToArray($myArray, 4);
print_r($myArray); // Output: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )

Trong ví dụ trên, chúng ta truyền biến $myArray vào hàm addToArray() theo call by reference. Sau đó, giá trị $value được thêm vào mảng $myArray bên trong hàm. Khi hàm được thực thi, mảng $myArray đã được thay đổi và được in ra màn hình.

Ví dụ

Bạn có thể sử dụng PHP Call By Reference để thay đổi giá trị của một biến:

function changeValue(&$value) {
$value = "Hello";
}
$myValue = "World"; changeValue($myValue); echo $myValue; // Output : Hello

Trong ví dụ trên, chúng ta truyền biến $myValue vào hàm changeValue() theo call by reference. Sau đó, giá trị của biến $myValue được thay đổi thành “Hello” bên trong hàm. Khi hàm được thực thi, giá trị của biến $myValue đã được thay đổi và được in ra màn hình.

Sự khác biệt giữa call by value và call by reference

Sự khác biệt chính giữa call by value và call by reference là:

  • Call by value: Giá trị của tham số sẽ được sao chép vào biến của hàm. Bất kỳ thay đổi nào được thực hiện đối với giá trị của tham số trong hàm sẽ không ảnh hưởng đến giá trị của tham số trong mã gọi hàm.
  • Call by reference: Tham chiếu đến biến của hàm sẽ được truyền vào hàm. Bất kỳ thay đổi nào được thực hiện đối với giá trị của tham số trong hàm cũng sẽ ảnh hưởng đến giá trị của tham số trong mã gọi hàm.

Khi nào nên sử dụng call by reference

Call by reference thường được sử dụng khi chúng ta cần thay đổi giá trị của tham số trong hàm. Ví dụ:

  • Khi chúng ta cần thêm hoặc xóa một phần tử trong một mảng.
  • Khi chúng ta cần thay đổi giá trị của một biến.

Call by reference là một cách truyền tham số mạnh mẽ trong PHP. Chúng ta có thể sử dụng call by reference để thay đổi giá trị của tham số trong hàm.

Ưu và Nhược điểm PHP Call By Reference

PHP Call By Reference có một số ưu và nhược điểm như sau:

Ưu điểm của PHP Call By Reference

  • Thay đổi giá trị của biến được truyền vào trong hàm.
  • Tiết kiệm bộ nhớ và thời gian thực thi vì không cần phải sao chép giá trị của biến vào một biến tạm thời trong hàm.

Nhược điểm của PHP Call By Reference

  • Khó kiểm soát giá trị của biến vì nó có thể bị thay đổi bất kỳ lúc nào.
  • Dễ dẫn đến những lỗi không mong muốn nếu không được sử dụng đúng cách.

Lời khuyên PHP Call By Reference

Việc sử dụng PHP Call By Reference phụ thuộc vào từng trường hợp cụ thể. Tuy nhiên, để tránh gặp phải những lỗi không mong muốn, chúng ta nên tuân thủ các quy tắc sau:

  • Đảm bảo rằng biến được truyền theo call by reference chỉ được sử dụng trong phạm vi của hàm.
  • Tránh thay đổi giá trị của biến được truyền vào theo call by reference nếu không cần thiết.
  • Nếu bạn muốn truyền giá trị của biến vào một hàm và không muốn thay đổi giá trị của nó, hãy sử dụng PHP Call By Value thay vì Call By Reference.

Kết luận

PHP Call By Reference là một phương thức truyền đối số vào một hàm bằng cách truyền theo tham chiếu. Việc sử dụng phương thức này giúp tiết kiệm thời gian thực thi và bộ nhớ, đồng thời cho phép thay đổi giá trị của biến được truyền vào trong hàm. Tuy nhiên, để tránh gặp phải những lỗi không mong muốn, chúng ta nên tuân thủ các quy tắc khi sử dụng phương thức này.

Việc sử dụng PHP Call By Reference phụ thuộc vào từng trường hợp cụ thể và nên được sử dụng một cách đúng đắn để tránh các lỗi không mong muốn. Nếu bạn cần thay đổi giá trị của biến được truyền vào trong hàm hoặc làm việc với các mảng hay đối tượng (object) trong PHP, thì PHP Call By Reference là một lựa chọn tốt. 

1. Vì sao chúng ta nên sử dụng PHP Call By Reference?

PHP Call By Reference giúp tiết kiệm thời gian thực thi và bộ nhớ, đồng thời cho phép thay đổi giá trị của biến được truyền vào trong hàm.

2. Có bao nhiêu cách truyền đối số trong PHP?

Trong PHP, chúng ta có thể truyền đối số vào một hàm theo hai cách: call by value hoặc call by reference.

3. Làm sao để sử dụng PHP Call By Reference?

Để sử dụng PHP Call By Reference, chúng ta chỉ cần thêm ký hiệu “&” trước tên biến khi khai báo đối số trong hàm.

4. Khi nào nên sử dụng PHP Call By Reference?

Việc sử dụng PHP Call By Reference phụ thuộc vào từng trường hợp cụ thể. Tuy nhiên, chúng ta nên tuân thủ các quy tắc khi sử dụng phương thức này để tránh gặp phải những lỗi không mong muốn.

5. Có bao nhiêu cách truyền giá trị trong PHP Call By Reference?

Trong PHP Call By Reference, chúng ta chỉ có một cách truyền giá trị, đó là truyền theo tham chiếu.