我试图根据某些条件获得不同的总和,需要有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..
);
}
答案 0 :(得分:0)
通过添加所有值(如
)来创建数组$ arraySum [] = array();
$ arraySum [] = $ nsum; $ arraySum [] = $ tnsum; 。 。 。 ECT
最后
使用
array_sum($ arraySum);
如果没有满足您的要求。完全提供你的代码。
答案 1 :(得分:0)
你的设计模式有我的朋友......
您应该创建一个计算不同总和的接口,并返回您选择的tupple(一组不同的值),而不是使用大型开关(打破Open / Closed原则)。
然后按照界面详细信息创建您的AREAS。一旦创建了所有区域计算器,只需创建它们中的每一个并根据id将它们放入一个数组中。然后,使用id加载正确的值并计算在tupple中返回的值...
您的代码看起来会更整洁!