在函数内部无法访问回调函数外部定义的PHP变量

时间:2012-02-02 21:03:34

标签: php variables scope

我正在尝试在回调函数中使用$variable。我将它传递给另一个函数:functionName("egTraders_ItemDataBound"),在该函数内部我将它分配给变量并调用它如下:$theAssignedFunctionVariable($this, $rowToAdd); 函数egTraders_ItemDataBound被正确调用但变量$variable 未定义。我该怎么办?

<?php

$variable = "var";
function egTraders_ItemDataBound($sender, $param1)  {
    echo $variable;
}

?>

4 个答案:

答案 0 :(得分:8)

如果您运行的是PHP 5.3+,只需使用use keyword(documentation)创建匿名函数即可实现此目的:

$bar = 'bar';
$f = function() use ($bar)
{
    var_dump($bar);
};

function bar( $fName )
{
    $fName();
}

bar($f);

答案 1 :(得分:3)

您可以将其作为参数传递,或者您可以将其用作函数中的全局。我不推荐后者。你应该远离全局。

编辑例如

$variable = "var";
function egTraders_ItemDataBound($sender, $param1) {
    global $variable;
    echo $variable;
}
egTraders_ItemDataBound(NULL, NULL);

答案 2 :(得分:0)

您需要将变量声明为global,因为它超出了范围

$variable = "var";
   function egTraders_ItemDataBound($sender, $param1)  {
            global $variable;
                   echo $variable;
                }

答案 3 :(得分:0)

变量声明在函数范围之外。你应该重新审视你的设计。我强烈建议不要使用全局变量,因为这是不好的做法。