変数のスコープとは、変数の有効範囲のこと。PHPの変数のスコープには、グローバルスコープとローカルスコープがある。
- グローバルスコープ
グローバル変数のスコープ(有効範囲)。
グローバル変数とは、関数の外部で定義した変数。
関数の内部でも外部でも、プログラム全体で呼び出せる。
関数の内部で呼び出すには、グローバル宣言するか、$GLOBALSを使用する必要がある。
- ローカルスコープ
ローカル変数ローカル変数のスコープ(有効範囲)。
ローカル変数とは、関数の内部で定義した変数。
変数を定義した関数の内部でのみ呼び出せる。
グローバルスコープ
関数の外部で定義した変数(グローバル変数)のスコープ(有効範囲)。
関数の内部でも外部でも、プログラム全体で呼び出せる。
グローバル変数を定義
関数の外部で定義する。
<?php
$var = 'サンプル'; // グローバル変数を定義
function sample() {
// 関数内部
}
?>
$var = 'サンプル'; // グローバル変数を定義
function sample() {
// 関数内部
}
?>
グローバル変数を関数の内部で呼び出す
グローバル変数を、関数の内部で呼び出すには、グローバル宣言するか、$GLOBALSを使用する必要がある。
グローバル宣言
<?php
$var = 'サンプル'; // グローバル変数を定義
function sample() {
global $var; // グローバル宣言
echo $var; // グローバル変数「$var」の値「サンプル」を出力
}
sample();
?>
$var = 'サンプル'; // グローバル変数を定義
function sample() {
global $var; // グローバル宣言
echo $var; // グローバル変数「$var」の値「サンプル」を出力
}
sample();
?>
↓↓↓出力結果↓↓↓
サンプル
$GLOBALSを使用
<?php
$var = 'サンプル'; // グローバル変数を定義
function sample() {
echo $GLOBALS[var]; // グローバル変数「$var」の値「サンプル」を出力
}
sample();
?>
$var = 'サンプル'; // グローバル変数を定義
function sample() {
echo $GLOBALS[var]; // グローバル変数「$var」の値「サンプル」を出力
}
sample();
?>
↓↓↓出力結果↓↓↓
サンプル
ローカルスコープ
関数の内部で定義した変数(ローカル変数)のスコープ(有効範囲)。
変数を定義した関数の内部でのみ呼び出せる。
ローカル変数を定義
関数の内部で定義する。
<?php
function sample() {
$var = 'サンプル'; // ローカル変数を定義
}
?>
function sample() {
$var = 'サンプル'; // ローカル変数を定義
}
?>
サンプル
<?php
$globalVarA = 'グローバル変数A'; // グローバル変数を定義
$globalVarB = 'グローバル変数B'; // グローバル変数を定義
function sample() {
global $globalVarA; // グローバル宣言
$localVar = 'ローカル変数'; // ローカル変数を定義
echo '<p>【関数内部から呼び出し】</p>';
echo '<p>関数内部でグローバル宣言したグローバル変数($globalVarA): ' . $globalVarA . '</p>';
echo '<p>関数内部でグローバル宣言しなかったグローバル変数($globalVarB): ' . $globalVarB . '</p>';
echo '<p>$GLOBALSを使用($GLOBALS[globalVarB]): ' . $GLOBALS[globalVarB] . '</p>';
echo '<p>関数内部で定義したローカル変数($localVar): ' . $localVar . '</p>';
}
sample();
echo '<p>【関数外部から呼び出し】</p>';
echo '<p>グローバル変数($globalVarA): ' . $globalVarA . '</p>';
echo '<p>グローバル変数($globalVarB): ' . $globalVarB . '</p>';
echo '<p>$GLOBALSを使用($GLOBALS[globalVarB]): ' . $GLOBALS[globalVarB] . '</p>';
echo '<p>関数内部で定義したローカル変数($localVar): ' . $localVar . '</p>';
?>
$globalVarA = 'グローバル変数A'; // グローバル変数を定義
$globalVarB = 'グローバル変数B'; // グローバル変数を定義
function sample() {
global $globalVarA; // グローバル宣言
$localVar = 'ローカル変数'; // ローカル変数を定義
echo '<p>【関数内部から呼び出し】</p>';
echo '<p>関数内部でグローバル宣言したグローバル変数($globalVarA): ' . $globalVarA . '</p>';
echo '<p>関数内部でグローバル宣言しなかったグローバル変数($globalVarB): ' . $globalVarB . '</p>';
echo '<p>$GLOBALSを使用($GLOBALS[globalVarB]): ' . $GLOBALS[globalVarB] . '</p>';
echo '<p>関数内部で定義したローカル変数($localVar): ' . $localVar . '</p>';
}
sample();
echo '<p>【関数外部から呼び出し】</p>';
echo '<p>グローバル変数($globalVarA): ' . $globalVarA . '</p>';
echo '<p>グローバル変数($globalVarB): ' . $globalVarB . '</p>';
echo '<p>$GLOBALSを使用($GLOBALS[globalVarB]): ' . $GLOBALS[globalVarB] . '</p>';
echo '<p>関数内部で定義したローカル変数($localVar): ' . $localVar . '</p>';
?>
↓↓↓出力結果↓↓↓
【関数内部から呼び出し】
関数内部でグローバル宣言したグローバル変数($globalVarA): グローバル変数A
関数内部でグローバル宣言しなかったグローバル変数($globalVarB):
$GLOBALSを使用($GLOBALS[globalVarB]): グローバル変数B
関数内部で定義したローカル変数($localVar): ローカル変数
【関数外部から呼び出し】
グローバル変数($globalVarA): グローバル変数A
グローバル変数($globalVarB): グローバル変数B
$GLOBALSを使用($GLOBALS[globalVarB]): グローバル変数B
関数内部で定義したローカル変数($localVar):
関数内部でグローバル宣言したグローバル変数($globalVarA): グローバル変数A
関数内部でグローバル宣言しなかったグローバル変数($globalVarB):
$GLOBALSを使用($GLOBALS[globalVarB]): グローバル変数B
関数内部で定義したローカル変数($localVar): ローカル変数
【関数外部から呼び出し】
グローバル変数($globalVarA): グローバル変数A
グローバル変数($globalVarB): グローバル変数B
$GLOBALSを使用($GLOBALS[globalVarB]): グローバル変数B
関数内部で定義したローカル変数($localVar):