繁体   English   中英

最好的方法是什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM