我试图根据某些条件获得不同的总和,需要有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;...等
结尾
使用函数($ arraySum);
如果不满足您的要求。提供完整的代码
你有一个设计模式的案例,我的朋友…
不要使用大的开关(打破开/闭原则),你应该创建一个接口来计算不同的和并返回你选择的元组(不同值的集合)。
然后根据接口细节创建您的区域。一旦创建了所有的区域计算器,只需创建每个区域计算器并将它们放入基于id的数组中。然后,使用id加载正确的那个,并计算元组中返回的值…
你的代码会看起来更整洁!