1

HTML と PHP コードがたくさんあり、テンプレート ファイルでは問題なく動作しますが、それを PHP 関数に入れようとしているところ、ページを実行するとエラーが発生します。Undefined variable: variableName

ここにいくつかのコードがあります:

function testFunction()
{
    foreach ($variableName as $variable):
        echo 'tasf';
    endforeach;
}

その関数内で$variableNameは見つかりませんが、関数の外に移動すると問題なく見つかります。問題がある場合は、symfony php テンプレート ファイル内でこれを行っています。

4

4 に答える 4

3

変数スコープの単純な問題。その変数が関数の外で定義されている場合は、そこに渡すか、グローバルに宣言する必要があります

マニュアルはこちら

于 2013-01-16T05:53:21.740 に答える
3

PHP 変数のスコープ

$str = 'Hello World';
echo $str; // works fine

function foo($bar){
    echo $bar; // passed as function argument. works fine
}

foo($str);

function bar(){
    global $str;
    echo $str; // passed from global. works fine
}
于 2013-01-16T05:53:35.393 に答える
1

関数スコープとは、変数が関数内で参照されるか、関数内で宣言されるか、渡される必要があることを意味します...

function testFunction($variableName)
{
    foreach ($variableName as $variable):
        echo 'tasf';
    endforeach;
}

Variable Scope に関する PHP マニュアルへのリンクを次に示します

globalいかなる場合でも、変数の使用に頼るべきではありません。常により良い方法があり、そうすることは貧弱な方法と見なされます。何が起こっているのかを理解するために他の誰かがコード全体を読まなければならない可能性があるため、コードを理解するのが難しくなります。

于 2013-01-16T05:57:41.890 に答える
0

globalこれを実現するには、キーワードを使用する必要があります。

globalただし、慎重に使用する必要があり、意図しない副作用が発生する可能性があります。

于 2013-01-16T05:53:35.733 に答える