W języku PHP zmienna predefiniowana $GLOBALS zawiera
$GLOBALS zawiera wszystkie zmienne zasięgu globalnego, dostępne pod ich nazwami.$_COOKIE.$_POST albo $_GET.$_ENV, a dane o serwerze $_SERVER.$GLOBALS to tablica asocjacyjna, w której kluczami są nazwy wszystkich zmiennych zasięgu globalnego, a wartościami ich wartości. Zmienna $licznik utworzona poza funkcją jest dostępna jako $GLOBALS["licznik"], także wewnątrz funkcji, gdzie zwykła nazwa zmiennej globalnej nie działa.
W PHP funkcja ma własny zasięg zmiennych, więc do zmiennej globalnej sięga się przez $GLOBALS albo słowo global. Jak inne zmienne superglobalne (na przykład $_POST czy $_SESSION), tablica jest dostępna w każdym miejscu skryptu. W praktyce lepiej przekazywać dane do funkcji przez parametry, bo kod zależny od zmiennych globalnych trudno testować.
Zapis $GLOBALS["licznik"] = 5; wewnątrz funkcji zmienia wartość zmiennej globalnej, a nie tworzy kopii lokalnej.
Każda z błędnych odpowiedzi opisuje inną tablicę superglobalną. Zmienne środowiskowe systemu operacyjnego zawiera $_ENV, a część informacji o serwerze i żądaniu - $_SERVER. Nazwa $GLOBALS kojarzy się z czymś „globalnym dla serwera”, ale dotyczy wyłącznie zmiennych bieżącego skryptu.
Dane z formularza trafiają do $_POST albo $_GET, zależnie od metody wysyłania określonej atrybutem method. Wartości ciasteczek zawiera $_COOKIE.
Wszystkie te tablice mają podobną budowę - nazwa zaczyna się od podkreślenia, a dane są dostępne w każdej funkcji - stąd łatwo je pomylić. $GLOBALS jako jedyna nie ma podkreślenia i jako jedyna przechowuje wszystkie zmienne z zasięgu globalnego skryptu, niezależnie od tego, skąd pochodzą ich wartości.
Dobrą metodą jest zapamiętanie źródła danych: formularz, ciasteczko, sesja, serwer i środowisko mają własne tablice, a $GLOBALS zbiera zmienne samego skryptu.