PHP Version 5.3.2-1ubuntu4.15
1,起始值:
$value_array = array('0.000','2.530',8);
$op_value = 2;
试试这个:
foreach($value_array as &$source_value) {
$source_value = $source_value + $op_value;
}
获取$ value_array ==(2,4.53,10);
但如果你这样做:
array_walk($value_array,function(&$source_value) {
$source_value = $source_value + $op_value;
});
你得到$ value_array ==(0,2.53,8);
第一个给出预期结果,第二个给出预期结果。但它确实做了一些事情。多余的0分最终被砍掉了。
这是为什么?我想使用array_walk但现在必须使用foreach。
答案 0 :(得分:14)
您可以使用use
声明来访问外部变量:
array_walk($value_array,function(&$source_value) use ($op_value) {
$source_value = $source_value + $op_value;
});
或者如果它是全球性的,你可以这样做:
array_walk($value_array,function(&$source_value) {
global $op_value;
$source_value = $source_value + $op_value;
});
答案 1 :(得分:0)
或者,您也可以使用 array_walk
的第三个参数来指定要传递给回调函数的 extra parameter。
array_walk($value_array, function(&$source_value, $key, $extra_param) { // <--- (2) and use here
$source_value = $source_value + $extra_param;
}, $op_value); // <--- (1) pass it here