在闭包中使用数组元素

时间:2012-05-31 19:02:37

标签: 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;
};

这不起作用,它给出了:

  

解析错误:语法错误,意外'[',期待','或')'

显然,我可以这样做:

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

但是,我认为必须有一个比这更好的方法。那么,有没有办法只关闭数组中的特定变量?

1 个答案:

答案 0 :(得分:2)

评论员已经提到过:没有。

目前use只需要T_Variable($ var)或Reference T_Variable(& $ var)。
但是有一个补丁可以在你的例子中使用as。它可以在gist找到。

也许这会在一段时间内合并为主人,以便将来可以发布。

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

因此,在此期间您必须使用备用解决方案。