php - 在闭包中使用数组元素

标签 php closures

PHP 5.3 添加了对闭包的支持,我想知道是否可以关闭特定的数组元素而不是整个数组。

例如,您可以这样做:

$a = array('a', 'e', 'i', 'o', 'u');
$f = function($b) use($a){
    echo $a[2].$b;
};
$f('!'); // echos "i!"

但是有没有办法只在 $a[2] 周围关闭?可能是这样的:

$f = function($b) use($a[2] as $c){
    echo $c.$b;
};

这不起作用,它给出:

Parse error: syntax error, unexpected '[', expecting ',' or ')'

显然,我可以这样做:

$c = $a[2];
$f = function($b) use($c){
    echo $c.$b;
};

但是,我认为必须有比这更好的方法。那么,有什么方法可以只关闭数组中的特定变量吗?

最佳答案

正如评论员已经提到的:没有。

目前 use 只需要一个 T_Variable ($var) 或一个 Reference T_Variable (&$var)。
但是有一个补丁可以像您的示例一样使用 as 。它可以在 gist 上找到.

也许这会在某个时间合并到 master 中,以便在未来的版本中成为可能。

但我真的不认为这是一个很大的功能:-)

因此,您必须同时使用替代解决方案。

关于php - 在闭包中使用数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10839670/

相关文章:

php - 在php中从json数组获取数据

php - 当sql join中存在两列同名时如何从一个表列中获取值

python - 我将如何理解Python中的这个深度绑定(bind)示例?

swift - 如何在 Swift 中声明一个作为属性名称的函数参数

java - 如何将 Unity webapp 放到 Google 应用引擎上

javascript - ReactJS AXIOS 帖子不起作用

php - 我的 jQuery 和 PHP 对同一件事给出不同的结果?

javascript - JavaScript闭包如何工作?

delphi - 将匿名方法分配给接口(interface)变量或参数?

functional-programming - “关闭”到底是什么意思?