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

変数のスコープとは、変数の有効範囲のこと。PHPの変数のスコープには、グローバルスコープとローカルスコープがある。

グローバルスコープ

グローバル変数のスコープ(有効範囲)。

グローバル変数とは、関数の外部で定義した変数。

関数の内部でも外部でも、プログラム全体で呼び出せる。

関数の内部で呼び出すには、グローバル宣言するか、$GLOBALSを使用する必要がある。

ローカルスコープ

ローカル変数ローカル変数のスコープ(有効範囲)。

ローカル変数とは、関数の内部で定義した変数。

変数を定義した関数の内部でのみ呼び出せる。

グローバルスコープ

関数の外部で定義した変数(グローバル変数)のスコープ(有効範囲)。

関数の内部でも外部でも、プログラム全体で呼び出せる。

グローバル変数を定義

関数の外部で定義する。

<?php
$var = 'サンプル'; // グローバル変数を定義
function sample() {
    // 関数内部
}
?>

グローバル変数を関数の内部で呼び出す

グローバル変数を、関数の内部で呼び出すには、グローバル宣言するか、$GLOBALSを使用する必要がある。

グローバル宣言

<?php
$var = 'サンプル'; // グローバル変数を定義
function sample() {
    global $var; // グローバル宣言
    echo $var; // グローバル変数「$var」の値「サンプル」を出力
}
sample();
?>

↓↓↓出力結果↓↓↓

サンプル

$GLOBALSを使用

<?php
$var = 'サンプル'; // グローバル変数を定義
function sample() {
    echo $GLOBALS[var]; // グローバル変数「$var」の値「サンプル」を出力
}
sample();
?>

↓↓↓出力結果↓↓↓

サンプル

ローカルスコープ

関数の内部で定義した変数(ローカル変数)のスコープ(有効範囲)。

変数を定義した関数の内部でのみ呼び出せる。

ローカル変数を定義

関数の内部で定義する。

<?php
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):
$GLOBALSを使用($GLOBALS[globalVarB]): グローバル変数B
関数内部で定義したローカル変数($localVar): ローカル変数
【関数外部から呼び出し】
グローバル変数($globalVarA): グローバル変数A
グローバル変数($globalVarB): グローバル変数B
$GLOBALSを使用($GLOBALS[globalVarB]): グローバル変数B
関数内部で定義したローカル変数($localVar):

スポンサード リンク

カテゴリー: PHP, 変数 タグ: パーマリンク