Phạm vi biến PHP
Phạm vi biến PHP
Trong PHP, các biến có thể được khai báo ở bất kỳ đâu trong tập lệnh.
Phạm vi của biến là một phần của tập lệnh nơi biến có thể được tham chiếu/sử dụng.
PHP có ba phạm vi biến khác nhau:
- địa phương
- toàn cầu
- tĩnh
Phạm vi toàn cầu và địa phương
Một biến được khai báo bên ngoài hàm có PHẠM VI TOÀN CẦU và chỉ có thể được truy cập bên ngoài hàm:
Ví dụ
Biến có phạm vi toàn cầu:
$x = 5; // global scope
function myTest() {
// using x inside this function will generate an error
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
echo "<p>Variable x outside function is: $x</p>";
Hãy tự mình thử »Một biến được khai báo trong một hàm có PHẠM VI ĐỊA PHƯƠNG và chỉ có thể được truy cập trong hàm đó:
Ví dụ
Biến có phạm vi cục bộ:
function myTest() {
$x = 5; // local scope
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
// using x outside the function will generate an error
echo "<p>Variable x outside function is: $x</p>";
Hãy tự mình thử »Bạn có thể có các biến cục bộ có cùng tên trong các hàm khác nhau, vì các biến cục bộ chỉ được nhận dạng bởi hàm mà chúng được khai báo.
PHP Từ khóa toàn cầu
Từ khóa global
được sử dụng để truy cập một biến toàn cục từ bên trong một hàm.
Để thực hiện việc này, hãy sử dụng từ khóa global
trước các biến (bên trong hàm):
Ví dụ
$x = 5;
$y = 10;
function myTest() {
global $x, $y;
$y = $x + $y;
}
myTest();
echo $y; // outputs 15
Hãy tự mình thử » PHP cũng lưu trữ tất cả các biến toàn cục trong một mảng có tên $GLOBALS[ index ]
. index
chứa tên của biến. Mảng này cũng có thể truy cập được từ bên trong các hàm và có thể được sử dụng để cập nhật trực tiếp các biến toàn cục.
Ví dụ trên có thể được viết lại như thế này:
Ví dụ
$x = 5;
$y = 10;
function myTest() {
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y; // outputs 15
Hãy tự mình thử »PHP Từ khóa tĩnh
Thông thường, khi một hàm được hoàn thành/thực thi, tất cả các biến của nó sẽ bị xóa. Tuy nhiên, đôi khi chúng ta muốn một biến cục bộ KHÔNG bị xóa. Chúng tôi cần nó cho một công việc tiếp theo.
Để làm điều này, hãy sử dụng từ khóa static
khi bạn khai báo biến lần đầu tiên:
Ví dụ
function myTest() {
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
Hãy tự mình thử »Sau đó, mỗi lần hàm được gọi, biến đó sẽ vẫn có thông tin chứa trong lần cuối cùng hàm được gọi.
Lưu ý: Biến vẫn là biến cục bộ của hàm.