PHP 変数のスコープ(参照できる有効範囲)〜未経験の為のPHPプログラミング講座〜
2020年9月1日
2021年2月19日

前回、前々回と関数についての記事を書きました。
今回は、関数にまつわる「スコープ(変数の参照できる有効範囲)」の解説を行います。
スコープ(参照できる有効範囲)とは?
スコープとは変数の参照できる有効範囲のことです。
スコープは2種類に分類できます。
- スクリプト全体から参照可能なグローバルスコープ
- 関数の中でのみ参照可能なローカルスコープ
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $x = 'グローバル'; function scopeFunction(){ $x .= 'ローカル'; return $x; } echo $x.'<br>'; echo scopeFunction(); ?> |
一見、関数内の「$x」はグローバル変数の「$x = ‘グローバル’」に文字列を連結して「グローバルローカル」となりそうですが実際には下記の様な結果となります。
1 2 | グローバル ローカル |
上記とは逆に関数内で宣言した「ローカル変数」を、関数外から参照することもできません。
global命令
関数内で関数外にある$xを参照したい場合は「global命令」を利用することにより可能となります。
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $x = 'グローバル'; function scopeFunction(){ global $x; $x .= 'ローカル'; return $x; } echo $x.'<br>'; echo scopeFunction(); ?> |
global $x; で関数内のローカル変数 $x を強制的にグローバル変数 $x とみなすことができます。
1 2 | グローバル グローバルローカル |
global命令を利用しない場合
global命令を利用せず、関数の引数として $x を渡してやることで同じ結果となります。
※厳密にはglobal命令を利用したものと全く同じではありません。
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $x = 'グローバル'; function scopeFunction( $x = '' ){ $x .= 'ローカル'; return $x; } echo $x.'<br>'; echo scopeFunction( $x ); ?> |
スコープの便利さ
スコープを見てきましたが一見難しいように思いますが、関数外の変数$x(グローバル変数)と関数内の変数$x(ローカル変数)は別物として扱われます。
前回学習した「ユーザー定義関数」をで自作の関数を作成時、簡単な変数名($iや$xなど)を利用している場合、変数の上書きをしてしまわないよう注意が必要ですが、グローバルスコープ、ローカルスコープのおかげで関数に関しては「変数の上書き」の心配がありません。
created by Rinker
PHP7の基本構文から、クラス、DB連携、セキュリティ対策まで、しっかり習得! PHPプログラミングの標準教科書『独習PHP』が、最新のPHP7に対応。PHPでWebページ/アプリケーションを開発する際に必要な基礎的な知識、PHPの基本構文から、クラス、データベース連携、セキュリティまで、詳細かつ丁寧に解説します。
created by Rinker
時間がなくたって、プログラミングは学べます。学習を躊躇していた人たちに、既存の入門書で挫折した人たちに、「これならできる!」の最短カリキュラムを、土日の14時間で提供。まったくのプログラミング初心者が簡単なWebデータベースアプリを構築できるまでの成長コースを、手取り足取り、導きます。
S.E->お勧め記事;
S.E->関連記事;
- Shopify APIを利用して在庫管理を行う
- PHP フレームワーク Laravel ディレクティブ – ループ変数 $loop –
- CrowdWorks 提案後、受注に繋がりました。提案〜契約までの流れを解説
- PHPフレームワーク「Laravel」ディレクティブ-繰り返し処理(ループ処理)-
- macOS Monterey にアップデート後、composerやhomebrewでenv: php: No such file or directoryが出る
- XSERVERにSSHを利用してLaravel環境を構築する
- Panic Nova 購入から1年が過ぎライセンスの更新時期の注意点
- プログラマー になる為に必要な プログラミング以外 の知識・スキル
- CrowdWorks いつの間にか「プロクラウドワーカー」になっていた
S.E->PR;
チームのタスク管理ツール【backlog】
FREENANCE(フリーナンス)
S.E->Weekly Ranking;
S.E->プロフィール;

