Php 在闭包中使用数组元素

Php 在闭包中使用数组元素,php,closures,Php,Closures,PHP5.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; }; 这

PHP5.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;
};

但是,我认为必须有一种更好的方法。那么,有没有什么方法可以在数组中接近一个特定的变量呢?

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

目前,
use
只需要一个T_变量($var)或一个参考T_变量(&$var)。
但是有一个补丁可以像您的示例中一样使用
。可以在上找到

也许这会在某个时候合并到master中,以便在将来的版本中实现

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


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

这是不可能的。如果可能的话,语法糖将比任何东西都重要。@zi42:“语法糖会导致分号癌。”现在已经是2020年了,而且似乎还没有被合并到PHP7.4.9中