php
のグローバルと $GLOBALS[] の分析
グローバル問題
php での global の使用。次の例:
$name="even";//変数名を定義して初期化します
function echoName()
{
// 変数を参照してみます関数の外側
echo "myname is ".$name."
";
}
echoName();
?>
分析:
の結果上記のコードは「myname is」です。予想されるものではなく、「私の名前は偶数です」。この関数はパラメーター $name の値を渡さないため、外部変数を参照しようとしても成功しません。現時点ではグローバルの使用を検討してください。
そのため、上記のコードは
global $name="even";//同時にグローバルで宣言され、値が割り当てられました
function echoName()
{
//関数の外で変数を参照しようとしています
echo "myname is ".$name."
";
}
echoName();
? >
結果: 解析エラー: 構文エラー、予期しない '='、D:phpserverwwwtesttest.php の行 2 に ',' または ';' が含まれています
つまり、上記のコードにエラーがあります。その理由は、グローバル宣言中に変数に値を割り当てることができないためです。
上記のコードを再度変更します:
global $name;
$name="even";//グローバル宣言と割り当てを分離
function echoName()
{
//関数の外で変数を参照しようとしています
echo "myname is ".$name."
";
}
echoName();
?>
しかし、結果は依然として「myname is」です。
その理由は、global の使用法が間違っているためです。global の正しい使用法は、「関数に外部変数を導入します。変数がパラメータを介して渡されない場合は、in を介して導入されます。」です。言い換えると、関数が外部変数を参照する場合、その変数を関数内でグローバルに宣言できるため、その変数を関数内で使用できます (パラメーターとして渡すのと同じです)。
そこで、上記のコードをさらに変更しました:
$name="even";//変数名を定義して初期化します
function echoName()
{
//global を介して $name を宣言することは、パラメータを渡すことと同じです
global $name;
echo "myname is ".$name."
";
}
echoName () ;
?>
この時点で、期待される結果「myname is Even」が得られます。
上記のコードは、変数のスコープをグローバルにするのではなく、パラメーターを渡すために global が使用されることを示しています。次のコードはこれを証明しています:
$name="even";//変数 $name を宣言して初期化します
function echoName1()
{
//In関数 echoName1() で global を使用して $name
global $name;
echo "最初の名前は ".$name."
";
}
function echoName2()
{
// 関数 echoName2()
での $name の宣言にはグローバルは使用されません echo "2 番目の名前は ".$name."
";
}
echoName1();
echoName2();
?>
結果は次のとおりです:
最初の名前は偶数です
2 番目の名前は
上記の結果は次のことを示しています関数内 echoName2() では、$name 変数は global で宣言されておらず、渡されていないため、まだ不明です。また、global の役割は変数のスコープをグローバルにすることではないことも証明しています。
要約すると、global の役割は、関数の外で宣言された変数を使用する場合、global を使用して変数を宣言することと同じです。これは、変数を関数に渡すことと同じです。変数を参照できます。
もちろん、上記の方法に加えて、外部変数が必要な場合は、$GLOBALS['var'] を使用するだけで、グローバル配列 $GLOBALS を使用することもできます。例:
$name="even";//変数名を定義し初期化
function echoName()
{
//グローバル配列を通じて参照 $GLOBALS 外部変数
echo "myname is ".$GLOBALS['name']."
";
}
echoName();
?>
取得された結果は次のとおりです: mynameは均等です。
また、global と $GLOBALS を使用する場合は、大文字と小文字が間違っているとキーワードが機能しなくなるので注意してください。