・ローカル変数とは何が違うの?
・関数の中でグローバル変数を使うにはどうすればいいの?
PHPを学習していると必ず目にするグローバル変数ですが、詳しい意味や使い方を知らない人も多いでしょう。
そこでこの記事では、PHPのグローバル変数(global)とは何か、そしてローカル変数との違いを解説します。
この記事を読めば、グローバル変数の使い方やローカル変数との違いを理解し、正しい使い分けをすることができるでしょう。
PHPを学習しているけど、グローバル変数が何かわからない、関数の中で使う方法を知りたい人は、ぜひ最後までご覧ください。
目次
グローバル変数(global)とは?
グローバル変数とは、PHPのファイル内の全体で扱うことのできる変数です。
1 2 3 4 5 6 7 8 9 |
<?php $グローバル変数名 = 値; function 関数名(){ global $グローバル変数名; //どの関数からも呼び出すことができる } 関数名(); ?> |
PHPは基本、上記のように「?php ~ ?」の中で処理を記述します。
グローバル変数は、このPHPのファイルの中であれば、どこでも扱うことができます。
例えば、グローバル変数を定義した後に関数を作ったとします。
そして、そのグローバル変数を関数の中で使いたいとなった場合でも、扱うことが可能です。
このように、グローバル変数はファイル内全体で扱うことのできる変数なので、利便性の高いものと言えますね。
グローバル変数とローカル変数の違い
PHPには変数が2種類存在します。
1つは先ほど解説したグローバル関数で、もう1つはローカル変数というものです。
これらは両方とも同じ働きをする「変数」ですが、きちんとした違いがあり、使い分ける必要があります。
では、このグローバル変数とローカル変数の違いは何なのでしょうか。
具体的な違いは以下の通りです。
- ・グローバル変数:PHPのファイル全体(グローバルスコープ)で扱うことのできる変数
- ・ローカル変数:決められた範囲内(ローカルスコープ)でしか扱うことができない変数
グローバル変数はPHPのファイル全体で扱える変数であり、ローカル変数は決められた範囲でしか扱えない変数であるということです。
上記で表したスコープというのは、変数を使える有効範囲を指します。
グローバル変数を扱える範囲をグローバルスコープと言い、ローカル変数を扱える範囲をローカルスコープと言います。
ローカルスコープは、主に関数の中({}で囲まれた範囲)であることが多いです。
そのため、ローカル変数は関数の外にあるグローバルスコープで扱うことはできません。
もし、ローカル変数をローカルスコープの外で扱った場合、同じ変数名でも全く別物として認識されてしまいます。
一度、ローカル変数をグローバルスコープで使用して、結果がどうなるのか確認してみましょう。
1 2 3 4 5 6 7 |
<?php function person(){ $name = '山田太郎'; } echo $name; //ローカル変数をグローバルスコープで扱っている ?> |
上記のように、nameというローカル変数を関数の外で扱ってみました。
そして、結果を表示すると、「Undefind variable」というエラーが出ましたね。
これは、「変数が定義されていません。」という意味になり、結果が表示されなくなります。
エラーの原因は、ローカルスコープでしか使えないローカル変数を、グローバルスコープで使ったためです。
つまり、ローカル変数はグローバルスコープ(関数の外)で扱うことができないということになります。
このように、グローバル変数とローカル変数は扱うことのできる範囲が異なるのです。
なので、きちんと違いを理解しておきましょう。
関数でグローバル変数やローカル変数を使う方法
ここまでで、グローバル変数とローカル変数の違いや使い分け方がわかりました。
なのでここからは、関数でグローバル変数やローカル変数を使う方法について解説していきます。
関数でグローバル変数を使う方法
まずは、関数でグローバル変数を使う方法です。
グローバル変数は、どの関数からも呼び出すことができますが、関数で使う際はglobalという宣言をする必要があります。
実際の書き方を見ていきましょう。
1 2 3 4 5 6 7 8 9 10 |
<?php $name = '山田太郎'; function person(){ global $name; echo $name; } person(); ?> |
関数の外で「山田太郎」という名前を、nameというグローバル変数名に定義します。
そのグローバル変数を関数内で使うには、上記のようにglobal宣言をします。
書き方は「global $変数名」というように書きましょう。
そして、global宣言をしてからechoで変数の値を出力します。
結果を表示すると、グローバル変数の値が表示されていますね。
このように、関数の中でグローバル変数を扱うときは、必ずglobal宣言をするようにしましょう。
このglobal宣言をしなかった場合、エラーが起きてしまったり、動作しなくなったりします。
1 2 3 4 5 6 7 8 9 |
<?php $name = '山田太郎'; function person(){ echo $name; //global宣言をしていない× } person(); ?> |
なので、関数内でのグローバル変数の扱い方をしっかり覚えておきましょう。
関数でローカル変数を使う方法
続いて、関数でローカル変数を使う方法です。
実際の書き方をコードで見ていきましょう。
1 2 3 4 5 6 7 8 |
<?php function person(){ $name = '山田太郎'; echo $name; } person(); ?> |
関数でローカル変数を使う際は、関数内で変数を定義して処理まで書きます。
今回は、変数名nameに「山田太郎」という文字列を定義し、echoで値を出力しています。
もしここで、以下のコードのように、「echo $name;」を関数の外で記述すると、動作しなくなります。
1 2 3 4 5 6 7 |
<?php function person(){ $name = '山田太郎'; } echo $name; //ローカル変数をグローバルスコープで扱っている× ?> |
なぜなら、ローカル変数はローカルスコープでしか使えないからでしたね。
初心者のうちは、変数を扱う場所がバラバラになってしまうこともあると思います。
ですが、1箇所でも間違えてしまうと、エラーになったり動作しなくなってしまうので、ローカル変数は関数内(ローカルスコープ)でのみ使用できるということを、しっかり覚えておきましょう。
まとめ
今回は、グローバル変数(global)とは何か、ローカル変数との使い分け方について解説しました。
グローバル変数は、ファイル内の全体で扱うことができる変数で、どの関数からも呼び出して使うことができます。
しかし、関数内でグローバル関数を使う場合は、globalと指定してグローバル変数を呼び出す必要があります。
また、ローカル変数は関数の中のような決められた範囲内でしか扱うことができないので、注意が必要です。
このように、グローバル変数やローカル変数の使い方を理解すれば、エラーを防ぐことにも繋がるでしょう。
この記事がPHPの学習に役立つと幸いです。