使用PHP的SUM变量的任何“其他”方式?

时间:2010-07-07 20:29:41

标签: php loops sum

在我的表格中,消费者可以选择将血液测试,视力测试或两者(组合)添加到几个登记者的账户中。这一切都是一次完成的。根据所做出的选择,我可以选择“选择”并回显相应的价格,但我最难建立一个脚本来“添加或加总”所有变量。

我知道array_sum()功能,但要么a)没有正确使用它,b)不适用于我的情况。

我的代码示例是:

    <tr>
        <td>Test(s) Ordered:</td>
        <td>
        <?php
            if($_SESSION['F'.$j.'Tests'] == "Blood") {
                $prem = "62.95";
                echo "Blood Test - $".$prem." per month";
            }
            elseif($_SESSION['F'.$j.'Tests'] == "Vision") {
                $prem = "60.00";
                echo "Vision Test - $".$prem." per month";
            }
            elseif($_SESSION['F'.$j.'Tests'] == "BVCombo") {
                $prem = "122.95";
                echo "Blood and Vision - $".$prem." per month";
            }
        ?>
        </td>

其中$ j是上面FOR循环中确定的登记者的编号。这个$ j变量的范围从1到16,我将永远不知道有多少登记者,直到登记完成的人与人之间。

最终,我正在尝试完成以下代码,但无法确定如何执行此操作:

$ sum = $ prem1 + $ prem2 + $ prem3 + $ prem4

其中$ prem1和$ prem2与特定个体相关。每个人只有一个保费总额,所以$ prem1可能等于62.95美元,60.00美元或122.95美元,等等继续参加者。

**

使用最终解决方案

** 我首先创建了$ total = array();我的整个表单的FOR循环之外的变量。然后:

        <?php
            if($_SESSION['F'.$j.'Tests'] == "Blood") {
                $prem = "62.95";
                echo "Blood Test - $".$prem." per month";
                $total[] = $prem;
            }
            elseif($_SESSION['F'.$j.'Tests'] == "Vision") {
                $prem = "60.00";
                echo "Vision Test - $".$prem." per month";
                $total[] = $prem;
            }
            elseif($_SESSION['F'.$j.'Tests'] == "BVCombo") {
                $prem = "122.95";
                echo "Blood and Vision - $".$prem." per month";
                $total[] = $prem;
            }
        ?>

最后,完全在循环之外:

<?php 
    } 
    $summ = array_sum($total);
    $premiumtotal = number_format($summ,2,'.','');
    echo "$".$premiumtotal;
?>

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

要使用array_sum,您需要一个数组。将所有宗地存储在一个数组中,如下所示:

$prem = array();
while (cond()) {

    //...
    if (cond2())
        $prem[] = 60;
    //...
}
$total = array_sum($prem);

我希望你明白了。

答案 1 :(得分:1)

你可以这样做:

   <tr>
        <td>Test(s) Ordered:</td>
        <td>
        <?php

            if($_SESSION['F'.$j.'Tests'] == "Blood") {
                $prem = "62.95";
                $total += $prem;
                echo "Blood Test - $".$prem." per month";
            }
            elseif($_SESSION['F'.$j.'Tests'] == "Vision") {
                $prem = "60.00";
                $total += $prem;
                echo "Vision Test - $".$prem." per month";
            }
            elseif($_SESSION['F'.$j.'Tests'] == "BVCombo") {
                $prem = "122.95";
                $total += $prem;
                echo "Blood and Vision - $".$prem." per month";
            }
        ?>
        </td>

编辑:我误解了这个问题,看到你想要所有登记者的总数。代码已更改为执行此操作。