Php 在闭包中使用数组元素
PHP5.3增加了对闭包的支持,我想知道是否可以关闭特定的数组元素而不是整个数组 例如,您可以执行以下操作: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; }; 这
$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中