【问题标题】:Can I use a function in place of a variable?我可以使用函数代替变量吗?
【发布时间】:2013-02-14 00:13:23
【问题描述】:

我很好奇 PHP 是否可以处理这样的代码,或者我是否使用了错误的语法:

$someString = implode(', ', function(){
    return array('a', 'b', 'c');
});

所需的输出为a, b, c

我使用的是 PHP 5.3.3 版。

【问题讨论】:

  • 请注意,PHP 确实支持某些参数中的闭包。但它们不能在任何地方都使用(在几乎任何接受闭包的语言中都是一样的)。
  • @John Conde,我应该提到我知道我粘贴的代码无效。我希望我错过了正确的语法。

标签: php closures anonymous-function


【解决方案1】:

implode() 的第二个参数是一个数组,所以你必须立即执行闭包:

$someString = implode(', ', call_user_func(function(){
    return array('a', 'b', 'c');
}));

如果有这个可能会更好:

$someString = implode(', ', function(){
    return array('a', 'b', 'c');
}());

但这会导致解析错误。

另一种可接受的方式:

$myGenerator = function(){
    return array('a', 'b', 'c');
};

$someString = implode(', ', $myGenerator());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2022-01-23
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多