【初心者向け】phpの$GLOBALSとは?特徴と使い方を徹底解説

PHPでは、グローバル変数を参照するために、$GLOBALSと呼ばれる変数があらかじめ定義されています。

しかし、どのように使えば良いのか理解できていない人もいるのではないでしょうか。

「$GLOBALSってどのように使えばいいのか分からない……」
「globalって単語も見かけるけど、違いがよく分からない……」

上記の悩みを抱えている方に向けて、今回は、

$GLOBALSの性質・使い方
$GLOBALSとglobalキーワードの違い

について解説します。

$GLOBALSはグローバル変数を格納した連想配列

PHP

$GLOBALSは、PHPで定義された連想配列の一種です。グローバル変数を参照したり値を設定したりすることが可能で、変数名をキーとして対応する変数の値が格納されています。

$GLOBALSの性質を理解するためには、PHPにおける変数のスコープについて把握するのが大きなポイントです。

ここでは、変数のスコープと$GLOBALSの関係について説明します。

変数のスコープと$GLOBALSの関係

変数には、自身が生存できる範囲(スコープ)が存在し、変数を定義した場所によってスコープが決まります。

PHPにおける変数のスコープは、以下の2種類があります。

  • ローカル変数:関数の中で定義され、関数の中でのみ生存
  • グローバル変数:関数の外で定義され、関数の外でのみ生存

ローカル変数は、関数の中で定義される変数です。関数の中で参照できる一方で、関数の外や他の関数から参照することはできません。

グローバル変数は、関数の外で定義される関数です。関数の外で参照できる一方で、関数の中で直接参照できません。

ただし、関数の中でグローバル変数を参照する方法は存在します。その方法の1つが、$GLOBALSを参照することです。

【PHP】ローカル変数とは?グローバル変数との違いや注意点は?

$GLOBALSは関数内でグローバル変数を参照できる

$GLOBALSを参照すれば、関数の中でグローバル変数を参照することができます。$GLOBALSは、連想配列としてすべてのグローバル変数を管理しているため、すべてのグローバル変数を参照可能です。

また、$GLOBALSを介してグローバル変数の値を書き換えることも可能です。$GLOBALSを通して書き換えた値は、元のグローバル変数にも反映していることも覚えておきましょう。

$GLOBALSの使い方

$GLOBALSの性質について理解したところで、ここからは、$GLOBALSの使い方についてくわしく解説していきます。

$GLOBALSの参照

$GLOBALSは連想配列なので、キーにグローバル変数名を指定することで対象の変数にアクセスできます。

グローバル変数に配列が格納されている場合も、添字を続けて指定することでアクセス可能です。

変数にオブジェクトが格納されている場合は、アロー演算子「->」を利用することでプロパティやメソッドにアクセスできます。

 

PHPのアロー演算子とは?初心者にもわかりやすく解説します

$GLOBALSの値設定

先述したように、$GLOBALSを利用してグローバル変数の値を設定することも可能です。参照する場合と同様に、中身が配列であれば添字で指定、オブジェクトであればアロー演算子「->」で指定することでアクセスします。

さらに、$GLOBALSを通して新しくグローバル変数を定義できます。

注意
$GLOBALSを使うときは、必ずすべて大文字で記述するようにしましょう。PHPの変数は、大文字と小文字を区別するため、$globalsは$GLOBALSとは別の変数として認識されます。

$GLOBALSとglobalキーワードの違い

PHPでは、$GLOBALSに似たキーワードとして「global」と呼ばれるものが存在します。名前や機能が似ているので、初めて学習する人にとっては違いが分からず悩んでしまいがちです。

$GLOBALSとglobalの共通点と相違点は、以下のとおりです。

  • 共通点:関数内でグローバル変数を参照できる
  • 相違点:グローバル変数の参照方法

globalは、forやifのようなキーワードの一種です。$GLOBALSと同様に、関数内でグローバル変数を参照するために使います。以下のサンプルコードのように、関数の中でglobalを加えながらグローバル変数を宣言することで、グローバル変数への参照ができるようになります。

 

【PHP】グローバル変数(global)とは?ローカル変数との使い分け方

まとめ

いかがでしたか?

今回は、

$GLOBALSの性質と使い方
$GLOBALSとglobalキーワードの違い

について解説しました。

$GLOBALSの性質を理解するためには、グローバル変数とローカル変数の違いを把握することが重要です。

違いを理解したうえで、どのように$GLOBALSを利用すればよいかを、実際にソースコードを書きながら身につけましょう。

BLOGコンテンツをパーソナライズします

あなたは現在「プログラミング学習者」ですか?