微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

访问php中嵌套函数中的变量

假设我有两个嵌套函数,如下所示:

$a = 1;
$b = 2;

function test(){
    $b  =   20;
    function Sum()
    {   
        $b  =   $GLOBALS['a']   +   $b;
    }
}
test();
Sum();
echo $b;

现在我希望函数Sum()访问函数test()中声明的$b变量;
你好吗?

解决方法:

野生猜测模式:
你的函数Sum()将“正常”取两个参数/操作数

function Sum($a, $b) {  
  return $a+$b;
}
echo Sum(1, 20);

现在你有了函数test(),你希望它返回一个只接受一个参数的函数fn,然后用一个“预定义”参数调用Sum($a,$b),然后传递给fn.

这称为currying或部分应用程序(取决于你究竟实现了什么),你可以用lambda functions/closures这样做,因为PHP 5.3

<?PHP
function Sum($a, $b) {
    return $a + $b;
}

function foo($a) {
    return function($b) use ($a) {
        return Sum($a, $b);
    };
}

$fn = foo(1) // -> Sum(1, $b);
$fn = foo(2) // -> Sum(2, $b);
echo $fn(47);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐