PHP変数のスコープ
PHP変数のスコープ
PHPでは、変数はスクリプト内のどこでも宣言できます。
変数のスコープは、変数を参照/使用できるスクリプトの一部です。
PHPには、3つの異なる変数スコープがあります。
- ローカル
- グローバル
- 静的
グローバルおよびローカルスコープ
関数の外部で宣言された変数にはグローバルスコープがあり、関数の外部でのみアクセスできます。
例
グローバルスコープの変数:
<?php
$x = 5; // global scope
function myTest() {
// using x inside this function will generate an error
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
echo "<p>Variable x outside function is: $x</p>";
?>
関数内で宣言された変数にはローカルスコープがあり、その関数内でのみアクセスできます。
例
ローカルスコープの変数:
<?php
function myTest() {
$x = 5; // local scope
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
// using x outside the function will generate an error
echo "<p>Variable x outside function is: $x</p>";
?>
ローカル変数は宣言された関数によってのみ認識されるため、異なる関数に同じ名前のローカル変数を含めることができます。
PHPグローバルキーワード
キーワードは、global
関数内からグローバル変数にアクセスするために使用されます。
これを行うglobal
には、変数の前(関数内)でキーワードを使用します。
例
<?php
$x = 5;
$y = 10;
function myTest()
{
global $x, $y;
$y = $x + $y;
}
myTest();
echo $y; // outputs 15
?>
PHPは、すべてのグローバル変数を。という配列に格納します
。は変数の名前を保持します。この配列は関数内からもアクセスでき、グローバル変数を直接更新するために使用できます。$GLOBALS[index]
index
上記の例は、次のように書き直すことができます。
例
<?php
$x = 5;
$y = 10;
function myTest()
{
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y; // outputs 15
?>
PHP静的キーワード
通常、関数が完了する/実行されると、その変数はすべて削除されます。ただし、ローカル変数を削除したくない場合があります。さらなる仕事のためにそれが必要です。
これを行うには、static
最初に変数を宣言するときにキーワードを使用します。
例
<?php
function myTest()
{
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
その後、関数が呼び出されるたびに、その変数には、関数が最後に呼び出されたときからの情報が含まれています。
注:変数はまだ関数に対してローカルです。