Truyền đối số tới hàm PHP bằng giá trị vs theo tham chiếu

Làm việc với tham chiếu

Bạn vừa học rằng bạn có thể truyền thông tin tới hàm dưới dạng đối số, cũng như trả thông
tin từ hàm về code gọi dùng phát biểu return. Khi bạn làm việc này, PHP thực sự đã truyền
một bản sao các thông tin tới và từ hàm, cái này được biết đến như là truyền và trả về bằng
giá trị. Trong hầu hết các trường hợp, đây không phải là vấn đề, nhưng đôi khi bạn lại muốn
hàm làm việc trên thông tin gốc hơn là bản sao của nó. Hãy xem xét ví dụ sau:

function resetCounter($c)
{
$c=0;
}
$counter=0;
$counter++;
$counter++;
$counter++;
echo”$counter<br/>”; //Display 3
resetCounter($counter);
echo”$counter<br/>”; //Display 3

Code này định nghĩa một hàm resetCounter(), cái thiết lập lại đối số của nó về 0. Biến
$counter được khởi tạo từ 0 và tăng lên 3 lần. Như bạn mong đợi, giá trị của $counter tại
điểm này là 3. resetCounter() sau đó được gọi, truyền đối số $counter, để biến được thiết lập
lại. Tuy nhiên khi đi đến phát biểu echo thứ hai, $counter đã không được thiết lập lại bởi hàm. Đó
là vì đôi số $c trong resetCounter() chỉ giữ một bản sao của thông tin lưu giữ trong $counter.
Vì vậy, khi hàm thiết lập $c về 0, nó không ảnh hưởng đến giá trị của $counter.

Chia sẻ

Leave a Reply

Your email address will not be published. Required fields are marked *