グローバル問題
phpでのグローバルの使用。次の例:
$name="even";//変数名を定義し、初期化する
function echoName()
{
//関数外の変数を参照しようとする
echo "myname is ".$name . "
";
}
echoName();
分析:
上記のコードの結果は次のとおりです。予想されるものではなく、「私の名前は偶数です」。この関数はパラメーター $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 を介して変数を宣言すると、その変数を関数内で使用できるようになります (パラメーターとして渡すのと同じです)。
そこで、上記のコードをさらに変更しました:
$name="even";//変数名を定義して初期化します
function echoName()
{
//global を介して $name を宣言することは、以下と同等ですパラメータを渡す
global $name;
echo "myname is ".$name."
";
echoName();
この時点で期待される結果が得られます: "myname is Even " 。
上記のコードは、変数のスコープをグローバルにするのではなく、パラメーターを渡すために global が使用されていることを示しています。次のコードはこれを証明しています:
$name="even";//変数 $name を宣言して初期化します
function echoName1()
{
//関数 echoName1() で $ を宣言するには global を使用しますname
global $name;
echo "最初の名前は ".$name."
";
function echoName2()
{
//global は関数 echoName2( )
echo "2 番目の名前は ".$name."
";
echoName1()
?> 結果は次のようになります:
最初の名前は
2 番目の名前は
上記の結果は、関数 echoName2() で $name 変数がまだ不明であることを示しています。これは、変数が global で宣言されておらず、渡されていないためです。また、global の役割は変数のスコープをグローバルにすることではないことも証明しています。
要約すると、global の役割は、関数の外で宣言された変数を使用する場合、global を使用して変数を渡すことと同等であり、変数は次のようになります。参照しました。
もちろん、上記の方法に加えて、外部変数を使用する必要がある場合は、$GLOBALS['var'] を使用するだけで、グローバル配列 $GLOBALS を使用することもできます。例: t & lt;? PHP
$ name = "EVEN"; // 変数名を定義し、
Function echoname () {
// グローバル配列経由 $ globals
Echo "myname is"。 'name']."
";
}
echoName();
結果は次のようになります: myname は偶数です。
さらに、global および $GLOBALS を使用する場合は、大文字と小文字が間違っていると、キーワードが機能しなくなるので注意してください。