Php 如何使用闭包返回值并将值赋给全局变量
我试图实现的是使用闭包添加数组中存在的变量,并将结果分配给Php 如何使用闭包返回值并将值赋给全局变量,php,closures,Php,Closures,我试图实现的是使用闭包添加数组中存在的变量,并将结果分配给$mul变量,但它似乎不起作用 我哪里出错了 $array = [1,2,3,4,5]; $mul =1; $sum = function(){ global $mul; foreach($array as $e){ $mul+= $e; } return $mul; }; print_r($sum); 我也试过这种方法,但没有用 $arr
$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语句不需要全局表达式,所以我对上面的行进行了注释
foreach($array as $e){
$m+= $e;
}
$mul= $m;
return $mul;
};
print_r($sum);
不需要该
全局
只需在该函数上添加一个参数并传递它:
$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;
不需要该
全局
只需在该函数上添加一个参数并传递它:
$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;
尝试:
当你声明匿名函数时,你仍然需要调用它,这是你没有做的
在所有这些情况下,当您只需将感兴趣的数组传递给函数,然后直接将总和返回给调用块时,无需专门尝试和更改外部变量。尝试:
当你声明匿名函数时,你仍然需要调用它,这是你没有做的
有了所有这些,当您只需将感兴趣的数组传递给函数,然后将总和直接返回给调用块时,无需专门尝试和更改外部变量。请不要发布仅代码的答案,请解释这个问题以及您是如何解决的。@Darren非常感谢您在我发布答案后半秒钟,在我完成重新编辑之前提醒我这一点。工作做得很快。很高兴你有幽默感@pala_:),但是你会浪费别人的时间快速发布你知道你要编辑的答案。你发布的答案很差,达伦的观点很准确!当你发帖试图成为第一个回答的人(等等,想要moar rep)而疯狂编辑时,人们正在查看你的答案。我自己,达伦,可能还有OP都是3个新手。我已经取消了我的否决票,因为它不再有效。如果我没有重访的话,它会一直存在,所以老实说,最好避免这种“战术”。根据需要写下你的答案。如果别人先进来,那就这样吧。让你的生活变得更好。谢谢你们的帮助。我一大早就很生气,因为我正在准备考试。你们帮了大忙!糟糕的是,我忘了调用函数。请不要只发布代码答案,请解释问题以及您是如何解决的。@Darren非常感谢您在我发布答案后半秒钟,在我完成重新编辑之前提醒我这一点。工作做得很快。很高兴你有幽默感@pala_:),但是你会浪费别人的时间快速发布你知道你要编辑的答案。你发布的答案很差,达伦的观点很准确!当你发帖试图成为第一个回答的人(等等,想要moar rep)而疯狂编辑时,人们正在查看你的答案。我自己,达伦,可能还有OP都是3个新手。我已经取消了我的否决票,因为它不再有效。如果我没有重访的话,它会一直存在,所以老实说,最好避免这种“战术”。根据需要写下你的答案。如果别人先进来,那就这样吧。让你的生活变得更好。谢谢你们的帮助。我一大早就很生气,因为我正在准备考试。你们帮了大忙!糟糕的是,我忘记调用这个函数了。