Laravel中如何在map集合闭包内使用多个外部变量
解决方案
PHP 闭包的 use 子句本身就支持传入多个外部变量,只需要用逗号分隔变量即可,Laravel 集合的 map 方法完全兼容该特性,不需要额外特殊处理。
基础用法示例
// 定义多个外部变量 $x = 'prefix_'; $y = '_suffix'; $z = 100; $collection = $collection->map(function ($item, $key) use ($x, $y, $z) { // 三个外部变量都可以在闭包内正常调用 $item->new_value = $x . $item->origin_value . $y . $z; return $item; });
额外注意事项
- 传入的变量顺序没有要求,只要在
use子句中列出的变量都可以正常访问 - 如果需要在闭包内修改外部变量的原始值,需要在变量前加
&符号声明为引用传递,示例如下:
$validCount = 0; $processed = $collection->map(function ($item) use (&$validCount) { if ($item->status === 1) { $validCount++; $item->is_valid = true; } return $item; }); // 闭包执行完成后,$validCount 已经更新为符合条件的条目数量
内容的提问来源于stack exchange,提问作者Aruki
相关产品推荐
相关产品推荐

