PHP版本5.3.2-1ubuntu4.15
1,起始值:
$value_array = array('0.000','2.530',8);
$op_value = 2;
Run Code Online (Sandbox Code Playgroud)
试试这个:
foreach($value_array as &$source_value) {
$source_value = $source_value + $op_value;
}
Run Code Online (Sandbox Code Playgroud)
得到$ value_array ==(2,4.53,10);
但如果你运行这个:
array_walk($value_array,function(&$source_value) {
$source_value = $source_value + $op_value;
});
Run Code Online (Sandbox Code Playgroud)
你得到$ value_array ==(0,2.53,8);
第一个给出预期结果,第二个给出预期结果.但它确实做了一些事情.多余的0分最终被砍掉了.
为什么是这样?我想使用array_walk但现在必须使用foreach.
Bar*_*mar 14
您可以使用use声明来访问外部变量:
array_walk($value_array,function(&$source_value) use ($op_value) {
$source_value = $source_value + $op_value;
});
Run Code Online (Sandbox Code Playgroud)
或者如果它是全球性的,你可以这样做:
array_walk($value_array,function(&$source_value) {
global $op_value;
$source_value = $source_value + $op_value;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4204 次 |
| 最近记录: |