Laravel中如何为array_map函数传递更多参数?
问题
现有如下PHP代码:
$option1=$res['attributes'][0]['option']; $option2=$res['attributes'][1]['option']; $row['variations'] = array_map(function($var) { return ['id' => $var]; }, $row['variations']);
当前array_map中的匿名函数仅能接收$var参数,返回的数组只有id字段:
0 => array:1 [▼ "id" => 3095 ] 1 => array:1 [▼ "id" => 3096 ]
希望修改后,返回的数组能包含option1和option2字段,目标结构如下:
['id' => $var, 'option1'=>$option1, 'option2'=>$option2]
期望的最终输出示例:
0 => array:3 [▼ "id" => 3095, "option1"=>"Blue", "option2"=>"M" ]
解决方案
在PHP的匿名函数中,通过use关键字可以引入外部作用域的变量,让函数内部能访问$option1和$option2。修改后的代码如下:
$option1=$res['attributes'][0]['option']; $option2=$res['attributes'][1]['option']; $row['variations'] = array_map(function($var) use ($option1, $option2) { return [ 'id' => $var, 'option1' => $option1, 'option2' => $option2 ]; }, $row['variations']);
修改后,$row['variations']的每个元素都会包含id、option1和option2三个字段,完全符合预期的输出结构。
内容的提问来源于stack exchange,提问作者milica98
相关产品推荐
相关产品推荐

