匿名函数中的PHP范围问题

时间:2017-03-07 08:18:14

标签: php scope anonymous-function

所以我有这些功能

function a(){
    int c = 1;
    b(function(){echo $c;});
}

function b($code){
    $code();
}

但不知何故,$ c在匿名函数中变得未定义 我知道,匿名功能是它自己的范围,但有什么办法可以使这个工作吗?

2 个答案:

答案 0 :(得分:1)

是:您可以使用“使用”声明。

function a()
{
    $c = 1;
    b(function() use ($c) {
        echo $c;
    });
}

function b($code){
    $code();
}

答案 1 :(得分:0)

http://php.net/manual/en/language.variables.scope.php

当您将$c放入函数时,它被视为local scope变量。