$GLOBALS là một trong những biến " superglobal " hoặc " automatic global " trong PHP. Nó có sẵn trong tất cả các phạm vi trong suốt một kịch bản. Không cần phải làm " global $variable; " để truy cập nó trong các hàm hoặc phương thức.
$GLOBALS là một mảng liên kết chứa các tham chiếu đến tất cả các biến được định nghĩa toàn cục. Tên của các biến tạo thành các khóa và nội dung của chúng là giá trị của một mảng liên kết.
Ví dụ này cho thấy mảng $GLOBALS chứa tên và nội dung của các biến toàn cục −
<?php $var1="Hello"; $var2=100; $var3=array(1,2,3); echo $GLOBALS["var1"] . "\n"; echo $GLOBALS["var2"] . "\n"; echo implode($GLOBALS["var3"]) . "\n"; ?>
Nó sẽ tạo ra output −
Hello 100 123
Trong ví dụ sau, $var1 được định nghĩa trong không gian tên toàn cục cũng như là một biến cục bộ bên trong hàm. Biến toàn cục được trích xuất từ mảng $GLOBALS.
<?php function myfunction() { $var1="Hello PHP"; echo "var1 in global namespace: " . $GLOBALS['var1']. "\n"; echo "var1 as local variable: ". $var1; } $var1="Hello World"; myfunction(); ?>
Nó sẽ tạo ra output −
var1 in global namespace: Hello World var1 as local variable: Hello PHP
Trước phiên bản PHP 8.1.0, các biến toàn cục có thể được sửa đổi thông qua một bản sao của mảng $GLOBALS.
<?php $a = 1; $globals = $GLOBALS; $globals['a'] = 2; var_dump($a); ?>
Nó sẽ tạo ra output −
int(1)
Ở đây, $globals là một bản sao của siêu toàn cục $GLOBALS. Việc thay đổi một phần tử trong bản sao, với khóa là "a" thành 2, thực sự thay đổi giá trị của $a .
Nó sẽ tạo ra output −
int(2)
Kể từ PHP 8.1.0, $GLOBALS là một bản sao chỉ đọc của bảng ký hiệu toàn cục. Điều này có nghĩa là các biến toàn cục không thể được sửa đổi thông qua bản sao của chúng. Phép toán tương tự như trên sẽ không thay đổi $a thành 2.
<?php $a = 1; $globals = $GLOBALS; $globals['a'] = 2; var_dump($a); ?>
Nó sẽ tạo ra output −
int(1)