在闭包中使用数组元素

Roc*_*mat 5 php closures

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

例如,您可以这样做:

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

但有没有办法只能靠近$a[2]呢?也许是这样的:

$f = function($b) use($a[2] as $c){
    echo $c.$b;
};
Run Code Online (Sandbox Code Playgroud)

这不起作用,它给出:

解析错误:语法错误,意外的“[”,期望“,”或“)”

显然,我可以这样做:

$c = $a[2];
$f = function($b) use($c){
    echo $c.$b;
};
Run Code Online (Sandbox Code Playgroud)

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

Seb*_*ler 3

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

\n\n

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

\n\n

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

\n\n

但我真的不\xc2\xb4t认为这是一个巨大的功能:-)

\n\n

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

\n