PHPで変数のスコープを使う方法【初心者向け】
プログラミング初心者向けに、PHPで【変数のスコープ】を使う方法を初心者向けに解説した記事です。変数は使える有効範囲が限られており、関数内で宣言した変数のことを「ローカル変数」、その外で宣言した変数を「グローバル変数」と言います。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
プログラミング初心者向けに、PHPの基礎を紹介する記事です。
今回は、変数のスコープを使う方法について解説します。
なお本記事は、TechAcademyのPHPオンライン講座の内容をもとにしています。
また、開発環境はXAMPPを使っています。
そもそもPHPが何か分からない場合は、先にPHPとはの記事をご覧ください。
今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。
スコープとは
PHPの変数は、使える有効範囲が限られており、この範囲のことをスコープ(scope)と言います。
{ }で囲まれた関数内で宣言した変数のことをローカル変数、その外で宣言した変数をグローバル変数と言います。そして、それぞれの変数の効力が及ぶ有効範囲をローカルスコープ、グローバルスコープと呼びます。
基本的に、ローカルスコープは{ }で囲まれた関数内を指しますが、グローバルスコープはプログラム全体どこでも使うことができます。
田島メンター!変数の有効範囲とは何でしょうか?
変数を宣言して値を入れたりしても、それを使える範囲っていうのは限られている場合もあるんだよ。例えば、関数の中で宣言されたりした場合とか。
関数の中で、宣言された変数などは外では使えないんですか?
そうそう。変数が有効な範囲をスコープって言ったりするんだ。スコープの例を見てみよう!
スコープの例
実際に関数を見ながら解説していきます。
<?php
function outputInfo($name){
$pet = “犬”; echo $name . “さんは” . $pet . “を飼っています。<br>”;
}
outputInfo(“山田”);
?>
引数として 山田 を定義し、関数側に渡すことで変数を含めた処理が呼び出されます。
これで実行すると、このように出力されます。
プログラム全体で見ると、ここでは関数内がローカルスコープとなり、 $pet = “犬”; はローカル変数になります。
よって、ローカル変数 $pet = “犬”; は、関数外のグローバルスコープでは使えません。
ためしに、グローバルのエリアで 変数 $pet を呼び出してみます。
<?php
function outputInfo($name){
$pet = “犬”;
echo $name . “さんは” . $pet . “を飼っています。<br>”;
}
outputInfo(“山田”);
echo $pet . “は可愛いですね。”;
?>
これでは実行してもエラーになってしまいます。
しかし、実はグローバルスコープでもローカル変数を使えるようにする方法があります。
[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは
グローバル宣言をする
ローカル変数をグローバルスコープでも使えるようにするためには、グローバル宣言をする必要があります。
変数のグローバル宣言は、以下のように global $○○ ; と書きます。
<?php
function outputInfo($name){
global $pet ;
$pet = “犬”; echo $name . “さんは” . $pet . “を飼っています。<br>”;
}
outputInfo(“山田”);
echo $pet . “は可愛いですね。”;
?>
※注意:グローバル宣言は、phpが上から順に読み込まれる性質上、その変数の前に書き込む必要があります。
すると、次のように出力されます。
これで、ローカル変数をグローバルスコープでも使うことができました。 global と書き込むだけなので、簡単ですね。
ためしに、変数を 犬 から 猫 に変えてみましょう。
<?php
function outputInfo($name){
global $pet ; $pet = “猫”;
echo $name . “さんは” . $pet . “を飼っています。<br>”;
}
outputInfo(“山田”);
echo $pet . “は可愛いですね。”;
?>
おわりに
PHPで変数のスコープを使う方法についての解説は以上です。
関数の中で変数を宣言しても、関数の外では使えないんですねー。
そうなんだ。ただし、globalって宣言すれば使えるようになるんだ。
何か少し面倒ですね。
実は、そうでもないんだ。変数名が同じになっても大丈夫だし、関数内で独立した変数として扱えるのは、けっこう便利なんだよ。他の人が作った関数を利用する場合とか、そのほうが良かったりするんだ。
PHPを勉強していて、
・もっと効率的に勉強したい
・誰かに聞きながら学びたい
・自分でWebサービスを作りたい
と思ったことはないでしょうか?
そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。
現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、オリジナルWebサービスを開発することが可能です。
独学に限界を感じている場合はご検討ください。