php 为匿名函数/闭包初始化 "use" 变量
php initialize "use" variable for anonymous function / closure
有没有一种巧妙的方法来初始化闭包中使用的变量?
function() use($v = 0) { echo ++$v }
...不起作用
一个示例用例是 array_reduce 我们可能想要计算数组元素...
echo array_reduce(['a', 'b', 'c'], function($output, $item) use(&$count) { return $output . ++$count . '. ' . $item . "\n"; }, '');
这会起作用 - 通过引用声明 $count 并从 null 递增不会产生错误 - 但我认为这不是“好的做法”。
您可以使用初始化一次的 static
变量。
echo array_reduce(['a', 'b', 'c'], function($output, $item) { static $count = 0; return $output . ++$count . '. ' . $item . "\n"; }, '');
有没有一种巧妙的方法来初始化闭包中使用的变量?
function() use($v = 0) { echo ++$v }
...不起作用
一个示例用例是 array_reduce 我们可能想要计算数组元素...
echo array_reduce(['a', 'b', 'c'], function($output, $item) use(&$count) { return $output . ++$count . '. ' . $item . "\n"; }, '');
这会起作用 - 通过引用声明 $count 并从 null 递增不会产生错误 - 但我认为这不是“好的做法”。
您可以使用初始化一次的 static
变量。
echo array_reduce(['a', 'b', 'c'], function($output, $item) { static $count = 0; return $output . ++$count . '. ' . $item . "\n"; }, '');