如何使用闭包 return 一个值并将该值赋给一个全局变量
How to return a value using a closure and assigning the value to a global variable
我想要实现的是使用闭包添加数组中存在的变量并将结果分配给 $mul
变量,但它似乎不起作用。
我哪里做错了?
$array = [1,2,3,4,5];
$mul =1;
$sum = function(){
global $mul;
foreach($array as $e){
$mul+= $e;
}
return $mul;
};
print_r($sum);
我也试过这个方法,但是没有用
$array = [1,2,3,4,5];
$mul =1;
$sum = function() use ($mul){
//global $mul;
// 我认为上面的 use 语句不需要这里的 global 所以我注释了上面的行
foreach($array as $e){
$m+= $e;
}
$mul= $m;
return $mul;
};
print_r($sum);
不需要 global
只需在该函数上添加一个参数并传递它即可:
$sum = function($array, $mul){ // add the arguments needed
// ^ ^
foreach($array as $e){
$mul += $e;
}
return $mul;
};
$array = [1,2,3,4,5];
$mul = 1;
$result = $sum($array, $mul); // invoke function
echo $result;
尝试:
$array = [1,2,3,4,5];
$mul =1;
$sum = function($arr) {
$mul = 0;
foreach($arr as $e){
$mul += $e;
}
return $mul;
};
$mul = $sum($array);
print $mul;
当你声明匿名函数时,你仍然必须调用它,这是你没有做的事情。
综上所述,无需专门尝试和更改外部变量,只需将感兴趣的数组传递给函数,然后 return 将总和直接传递给调用块.
我想要实现的是使用闭包添加数组中存在的变量并将结果分配给 $mul
变量,但它似乎不起作用。
我哪里做错了?
$array = [1,2,3,4,5];
$mul =1;
$sum = function(){
global $mul;
foreach($array as $e){
$mul+= $e;
}
return $mul;
};
print_r($sum);
我也试过这个方法,但是没有用
$array = [1,2,3,4,5];
$mul =1;
$sum = function() use ($mul){
//global $mul;
// 我认为上面的 use 语句不需要这里的 global 所以我注释了上面的行
foreach($array as $e){
$m+= $e;
}
$mul= $m;
return $mul;
};
print_r($sum);
不需要 global
只需在该函数上添加一个参数并传递它即可:
$sum = function($array, $mul){ // add the arguments needed
// ^ ^
foreach($array as $e){
$mul += $e;
}
return $mul;
};
$array = [1,2,3,4,5];
$mul = 1;
$result = $sum($array, $mul); // invoke function
echo $result;
尝试:
$array = [1,2,3,4,5];
$mul =1;
$sum = function($arr) {
$mul = 0;
foreach($arr as $e){
$mul += $e;
}
return $mul;
};
$mul = $sum($array);
print $mul;
当你声明匿名函数时,你仍然必须调用它,这是你没有做的事情。
综上所述,无需专门尝试和更改外部变量,只需将感兴趣的数组传递给函数,然后 return 将总和直接传递给调用块.