[英]What's the best way to do this?
我试图根据某些条件获得不同的总和,需要有20个不同的变量,这些变量将在函数末尾返回。 我觉得应该有一个更简单的方法吗? 感谢您的高级帮助。
function getTotalNutrients($id)
{
$applications = $this->getApplications($id);
$nsum = 0;
$psum = 0;
$ksum = 0;
$mgsum = 0;
// ...
foreach( $applications as $pro ) {
$details = $this->getAppliedNutrients($pro->id);
foreach($details as $nutrients){
switch($pro->area){
case "1":
$nsum += ($nutrients->n);
$psum += $nutrients->p;
$ksum += $nutrients->k;
$mgsum += $nutrients->mg;
break;
case "2":
$tnsum += ($nutreients->n);
// ...
break;
case "3":
$fnsum += ($nutreients->n);
//...
break;
case "4":
// ...
break;
case "5":
// ...
break;
}
}
}
return array(
$nsum,
$psum,
$ksum,
$mgsum,
$tnsum,
// etc..
);
}
通过添加所有值来创建数组
$ arraySum [] = array();
$ arraySum [] = $ nsum; $ arraySum [] = $ tnsum; 。 。 。 等
在末尾
采用
array_sum($ arraySum);
如果没有满足您的要求。 完全提供您的代码。
我的朋友,您这里有设计模式的案例。
代替使用大型开关(破坏“打开/关闭”原理),您应该创建一个接口,该接口可以计算不同的总和并返回所选的整数(一组不同的值)。
然后根据界面详细信息创建自己的区域。 创建所有区域计算器后,只需创建它们中的每个并将其基于ID放入数组中即可。 然后,使用id加载正确的一个,并计算在tupple中返回的值...
您的代码看起来会更整洁!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.