PHPで変数のスコープを使う方法【初心者向け】

プログラミング初心者向けに、PHPで【変数のスコープ】を使う方法を初心者向けに解説した記事です。変数は使える有効範囲が限られており、関数内で宣言した変数のことを「ローカル変数」、その外で宣言した変数を「グローバル変数」と言います。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,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のプログラミングで挫折しない学習方法を動画で公開中

グローバル宣言をする

ローカル変数をグローバルスコープでも使えるようにするためには、グローバル宣言をする必要があります。

 

変数のグローバル宣言は、以下のように 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人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。