-1

私はphpに比較的慣れていないので、非常に奇妙な問題に遭遇しました。本当に簡単なコードの例を挙げましょう

$test = 'test';

function test(){
    echo $test;
}

test();

上記の例では、test() 関数を呼び出した結果として 'test' を返し、まったく問題なく動作していました。ただし、今日、変数 $test が未定義であるというエラーが返され始めました。以前は問題なく機能していたと 100% 確信しています。これはphpの更新ですか?または私はここで何か間違っていますか?私は wamp を使用しており、ローカルホストでこれをテストしています。ありがとう!

4

3 に答える 3

3

これは予想される動作であり、「変数スコープ」と呼ばれます

これを読んでください:http://php.net/manual/en/language.variables.scope.php

「落とし穴」の1つは次のとおりです。

C のグローバル変数は、ローカル定義によって特にオーバーライドされない限り、関数で自動的に使用できるという点で、これは C 言語とは少し異なることに気付くかもしれません。これにより、ユーザーが誤ってグローバル変数を変更する可能性があるという問題が発生する可能性があります。PHP では、グローバル変数を関数内で使用する場合、グローバル変数を関数内で宣言する必要があります。

于 2012-06-23T08:51:56.810 に答える
2

機能範囲外だからです。関数の外部で定義された変数にアクセスするには、globalキーワードを使用する必要があります。

$test = 'test';

function test(){
    global $test
    echo $test;
}

test();

ここでphpマニュアルリンクの変数スコープについて読んでください:http://php.net/manual/en/language.variables.scope.php

于 2012-06-23T08:53:01.573 に答える
1

global $test;関数内で、関数test内の変数testに意味があることを宣言する必要があります。さらに、中括弧{}内で宣言された変数は、関数内だけでなく、中括弧のスコープを離れると設定が解除されます。

于 2012-06-23T08:54:18.110 に答える