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

PHPでは、ソースコード内の決められた範囲でしか使えない変数のことを、ローカル変数といいます。一方、ほとんど意識することなく使える変数を、グローバル変数といいます。

そこで今回は、PHPのローカル変数とグローバル変数についての解説と、使い方の違いについて紹介していきます。PHPプログラミング初心者の方は、特に参考になると思いますよ。

PHPのローカル変数とは

PHPのローカル変数とは、決められた範囲内でしか使えない変数のことです。例えば、関数内で定義された変数は、その関数内の処理以外では基本的には使えません。

ローカル変数内の値を他の関数でも使用したい場合には、関数の戻り値にするなどの対応が必要です。

一方、使える範囲をほとんど気にする必要がなく、ファイル全体で有効な変数もあります。これをグローバル変数といいます。

PHPのローカル変数とグローバル変数の違い

プログラミング初心者の人であれば、PHPで利用されるローカル変数とグローバル変数の違いについて、いまいち理解できていない人も多いでしょう。

そこで、実際にサンプルコードを使って、各変数の違いを比較してみましょう。

ローカル変数の使い方

ローカル変数は、限られた範囲内でのみ使用できる変数なので、変数の値を使う場合には、使用可能な範囲内で利用する必要があります。

ローカル変数の使い方は次の通りです。

出力結果
ローカル変数

上記のコードでは、変数hogeはfoo関数内で定義されたローカル変数です。そのため、変数hogeの値を使いたい場合には、foo関数内で使用する必要あります。

グローバル変数の使い方

グローバル変数は、ファイル全体で有効な変数なので、関数内で定義されていなくても、グローバル宣言をすることで、変数内の値を使用することができます。

グローバル変数の使い方は次の通りです。

出力結果
グローバル変数

上記のコードでは、変数hogeはグローバル変数です。変数hogeは、関数foo内で定義されていませんが、グローバル宣言をすることで、変数hogeに定義された値を使用することができます。

ローカル変数とグローバル変数の動作の違い

ローカル変数とグローバル変数の動作の違いの参考として、ローカル変数とグローバル変数の変数名を同じにして、各状況における動作を確認してみましょう。

まずは、関数内でグローバル変数名と同じローカル変数を定義した場合の動作について確認してみます。

出力結果
関数内:ローカル変数
関数外:グローバル変数

ローカル変数の値はfoo関数内でのみ利用可能なので、foo関数の外ではグローバル変数の値が出力されました。

次に、関数内でローカル変数を定義後、同じ変数名のグローバル変数を宣言してみましょう。

出力結果
関数内:ローカル変数
関数内:グローバル変数
関数外:グローバル変数

上記の通り、関数foo内で定義されたローカル変数hogeですが、同じ名前のグローバル変数を宣言することで、上書きされました。

最後に、関数内でグローバル宣言した後に、グローバル変数の値を変更した場合、関数の外ではどのように動作するのか確認してみましょう。

出力結果
関数内:グローバル変数
関数内:ローカル変数
関数外:ローカル変数

foo関数内でグローバル宣言後、変数hogeの値を変更し、foo関数の外でグローバル変数の値を出力してみると、foo関数内で変更した値が出力されました。これは、グローバル宣言後の変数hogeの操作は、グローバル変数の値を操作したことになるためです。

このように、操作する変数がローカル変数かグローバル変数かをしっかりと把握していないと、システムエラーに繋がる可能性があります。
変数を定義する際には、変数名が同じにならないようにルール付けをするなどの工夫をするようにしましょう。

PHPにおける変数のスコープとは

PHPでは、定義した変数や関数の使える範囲のことをスコープといいます。つまり、ローカル変数のスコープは、変数を定義した関数内で、グローバル変数のスコープは、ファイル全体ということになります。

プログラミング初心者の人の中には、いちいち定義するのは面倒だから、全てグローバル変数に統一してしまおうと思う人もいるかもしれません。しかし、スコープの範囲を広げることは、プログラムの処理を追いにくくする原因になります。また、最終的にはコードも書きづらくなります。

スコープを意識して変数を定義することは、システムの保守性を向上させる要因の1つです。PHPのプログラミングでは、スコープを意識するようにしましょう。

なお、ローカル変数とグローバル変数の他にも、全てのスコープで使用できる「スーパーグローバル」と呼ばれる組み込みの変数も存在します。

PHPのstatic変数とは

グローバル変数と似たような働きをする変数にstatic変数があります。静的変数とも呼ばれています。

static(静的)とは、クラスのインスタンスを生成せずに、クラスメンバにアクセス可能なメンバのことです。

static変数は、変数の先頭にstaticを付けて定義します。

他のPHPファイルに定義された変数を使う方法

グローバル変数のスコープは、同一ファイル内です。つまり、別のファイルにあるグローバル変数は使えないということです。

しかし、別ファイルを読み込むことで、別ファイルで定義されたグローバル変数も使えるようになります。

別ファイルの読み込みには、include文を記述する必要があります。書き方は次の通りです。

出力結果
sample

上記コードでは、「test.php」内で、別ファイルである「sample.php」をインクルードしました。これにより、「sample.php」内で定義されている変数hogeの操作が可能になりました。

まとめ

PHPには、ローカル変数とグローバル変数があります。各変数は、変数を利用できる有効範囲に明確な違いがあります。その範囲のことをスコープといいます。

変数を定義する際には、変数の使用目的に合わせてローカル変数として定義するのか、グローバル変数として定義するのかを選択しましょう。

スコープを意識せずに定義された変数は、システムの保守性を大きく損なう原因になります。これからプログラミングを始めたいと考えている人は、ローカル変数とグローバル変数の違いを、しっかりと理解するようにしましょう。

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

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