不能执行变量php中返回的函数

时间:2016-08-12 09:44:14

标签: php function variables syntax

我有一个使用这种语法的函数:

$variable = function() {
    return function(){
        //code
    }
}

我无法用

执行该功能
$variable()

有没有办法执行这个功能?

4 个答案:

答案 0 :(得分:5)

我不知道它是什么......但这里的例子:

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

答案 1 :(得分:3)

存储在$variable中的匿名函数(外部函数)返回另一个函数(内部函数)。

调用$variable()表示外部函数返回内部函数。请参阅 - 返回,而不是执行。但是,由于您没有将外部函数的结果分配给任何变量,因此您的内部函数不会存储在任何位置。

所以,解决方案是:

$res = $variable();  // res stores an inner function
$res();

或(在PHP7中)

$variable()();

答案 2 :(得分:0)

函数正在返回,并且调用没有做任何事情,使用echo:

echo $variable();

为了清楚起见,我建议使用单独的功能。

$variable = doSomething();

function doeSomething(){
   //code
}

答案 3 :(得分:0)

如果不支持新变量,您可以这样做:

call_user_func($variable());