[PHP入門] 変数の有効範囲(スコープ)とは? global命令とstatic命令もわかりやすく解説します!

PHPでは変数の有効範囲(スコープ)が存在しています。

変数は使用できる範囲が限られており、関数外で使用できるグローバル変数と関数内で使用できるローカル変数に分類することができます。

このページでは変数の有効範囲(スコープ)について解説していきます。

気になる方は是非ご覧になってください!

1.変数の有効範囲(スコープ)

PHPでは変数の有効範囲が限られており、この有効範囲のことをスコープと呼びます。

PHPのスコープは、

  • 関数外から参照できるグローバルスコープ
  • 関数内のみで参照できるローカルスコープ

に分類することができます。

グローバルスコープはプログラム全体で使用することができます。

一方、ローカルスコープは{}で囲まれた関数内でのみ使用することができます。




2.グローバル変数とローカル変数とは? 使い方は?

グローバルスコープである変数のことをグローバル変数、ローカルスコープである変数のことをローカル変数と呼びます。

グローバル変数とローカル変数の違いは何でしょうか?

グローバル変数とローカル変数の違いは関数外にあるか関数内にあるかです。

それでは具体的にグローバル変数とローカル変数を見ていきましょう。

上記のスクリプトは一見、FruitName()を実行すると$fruitが表示されるかと思いますが、実際に$fruitは表示されません。

なぜなら、スコープの異なる変数は変数名が同じでも、異なる変数と見なされるからです。

2行目の$fruitはグローバル変数、4行目の$fruitはローカル変数と判断され、別物として扱われます。

その結果として何も表示されませんでした。

$fruitを表示させたい場合はfunction命令内に定義されていないといけません。

以下が$fruitを表示させるスクリプトです。

今度は、$fruitを関数内に定義したことで「apple」と表示されました。




3.global命令とは?

上記で、グローバル変数はローカル変数内で使用することができないことが分かりました。

しかし、関数内でグローバル変数を使用したい場合、どのようにすればいいのでしょうか。

この場合、global命令を使用することで、ローカル変数を強制的にグローバル変数と見なすことができます。

それでは具体例を見ていきましょう。

4行目でglobalと付け加えることで、関数内の$fruitがグローバル変数と見なされます。

その結果、appleと表示されます。




4.static命令とは?

ローカル変数のスコープは関数内だけで、関数内処理が終了すると、ローカル変数が破棄されてしまいます。

そのため、以下のような関数はユーザーが意図した通りに動きません。

function命令内ではカウントアップを行う命令になっていますが、この関数を繰り返し呼び出しても、結果は常に2となります。

ローカル変数$numberは関数が呼び出されるたびに初期化されるためです。

では、関数が初期化されないためにどのような処理を行うといいでしょうか。

この場合、static命令を使用することで関数が終了した後でもローカル変数を維持することができます。

それでは具体例を見ていきましょう。

static命令を付け加えることで今度はしっかりとカウントアップされて表示されました。




5.PHPをもっと学びたい方へ

最後まで読んで頂きまして、ありがとうございます。

PHPをもっと学びたいという方はいないでしょうか?

上記のように考えている方にオススメの教材があります。

確かな力が身につくPHP「超」入門

この本ではPHPの基礎構文だけでなく、商品管理システムを作りながら、PHPをより実践的に学ぶことができます。

そのため、PHPを一通り学んだ方にオススメできる一冊です。

是非、挑戦してみてはいかがでしょうか?

以下の記事でPHPを学ぶことができるオススメの本をまとめていますので、よかったらご覧になって下さい。

[初心者~中級者向け] PHPを学ぶことができるおすすめの本

Udemy

UdemyではPHPを学ぶことができる講座を多数取り扱っています。

以下の記事でPHPを学ぶことができるオススメの講座をまとめていますので、よかったらご覧になって下さい。

[2021年最新版] Udemy(ユーデミー) おすすめのPHP講座

TechAcademy

TechAcademy [テックアカデミー]ではPHPを学ぶことができます。

無料体験も行っているので是非、体験してみてはいかがでしょうか?

TechAcademyについてまとめた記事もありますので、よかったらご覧になって下さい。

いくら? 悪評は? TechAcademy(テックアカデミー)とは? 口コミもまとめてみました!




6.ポイント

ポイント
  • PHPでは変数の有効範囲が限られており、この有効範囲のことをスコープと呼びます
  • 関数外から参照できるグローバルスコープと関数内のみで参照できるローカルスコープに分類することができます
  • グローバルスコープである変数のことをグローバル変数、ローカルスコープである変数のことをローカル変数と呼びます
  • global命令を使用することで、ローカル変数を強制的にグローバル変数と見なすことができます
  • static命令を使用することで関数が終了した後でもローカル変数を維持することができます

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です