変数のグローバルスコープとローカルスコープ

可変変数

可変変数では、変数名を動的に変更し使用できます。書式は、${$変数名}となり、変数名を{}で囲むことで、動的に変数を生成できます。

<?php

$array = array("hensuname","atai");

//hensunameという変数を作って、ataiという値を入れています。
${$array[0]} = $array[1];

echo $hensuname;
?>

◆実行結果
atai

グローバルスコープ

PHPブロックのすぐ内側からは、グローバルスコープとなり、グローバルスコープで定義されている変数は、別のPHPブロックからもアクセス可能です。このスコープの範囲は、 includeやrequireにより読みこまれたファイルも含んでいます。例えば、以下の例では、インクルードした include.php での処理に変数 $a も使用できます。

<?php
$a = 1;
include 'include.php';
?>

ローカルスコープ

関数やクラスのメソッド内は、ローカルスコープとなります。ローカルスコープ内で定義されている変数は、関数やクラスのメソッドの外側からアクセスすることは出来ません。通常ローカルスコープから、グローバルスコープにアクセス出来きません。この場合、ローカルスコープから、グローバルスコープにアクセスするには、globalキーワードを使用します。

以下の例では、globalキーワードを使用していませんので、グローバルスコープの変数 $hensu1 の値をローカルスコープ内で取得することはできません。

<?php
$hensu1 = 1;//グローバルスコープの変数

function test()
{
    echo $hensu1;//ローカルスコープ変数の参照
}
test();
?>

◆実行結果

globalキーワード

ローカルスコープ内から、グローバルスコープに定義されている変数にアクセスしたい場合は、globalキーワードを使用します。

<?php
$hensu1 = 1;//グローバルスコープの変数

function test()
{
    global $hensu1;//globalキーワードを使用
    echo $hensu1;//ローカルスコープ変数の参照
}
test();
?>

◆実行結果
1

スーパーグローバル変数

PHPは、最初から定義されている変数も存在しています。こちらは、全てのスクリプトにて使用できます。スーパーグローバル変数に関しては、別ページに詳しく記載しています。

このページの先頭へ