更新: 从PHP7开始,现在可以使用以下语法来使用匿名函数取消引用:
$function = (function() { return "Hello, world!"; })(); echo $function; // Output: Hello, world!
$array[] = [
'new' => (function()
{
...
return mt_rand();
})(),
'or' => getClosure()()
]
原始帖子:最近我在尝试一些新东西,并想知道是否有任何方法可以使用匿名函数的返回值。
假设我有一个for循环,它创建一个数组,数组的每个值都必须进行数据库调用,我想要做的是:
for($i = 0; $i != 10; $i++)
{
$array[] = [
'new' => function(){
// some proccesing here maybe
// lets use mt_rand for this example.
return mt_rand();
},
'old' => function(){
return mt_rand();
}
];
}
或者也许
echo function(){
// again, we'll just use mt_rand
return mt_rand();
};
这两种方法都返回一个 closure
类。有没有办法将它们的返回值传回到数组或者上面的示例中进行输出?
更新:我已经确认这是不可能的,因此可以在此处找到功能请求:http://bugs.php.net/bug.php?id=64608