Любой «другой» способ суммирования переменных с использованием PHP? - PullRequest
2 голосов
/ 08 июля 2010

В имеющейся форме потребитель может добавить анализ крови, зрение или оба (комбинированные) к нескольким учетным записям зачисленных.Это все сделано за один раз.Основываясь на сделанном выборе, я могу выбрать «выбор» и отобразить соответствующую цену, но мне сложнее всего построить сценарий для «сложения» или «суммирования» всех переменных.

Мне известна функция array_sum (), но я либо а) не правильно ее использую, б) не применима в моем случае.

Пример кода, который у меня есть:

    <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 относятся к конкретным лицам.Каждый участник будет иметь только одну премиум-сумму, поэтому премия в размере $ 1 может быть равна 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 ]

3 голосов
/ 08 июля 2010

Чтобы использовать array_sum, вам нужен массив. Сохраните все посылки в массиве, например так:

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

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

Надеюсь, у вас есть идея.

1 голос
/ 08 июля 2010

Вы можете сделать что-то вроде этого:

   <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>

РЕДАКТИРОВАТЬ: Я неправильно понял вопрос, и вы видите, что вы хотите общее количество для всех зачисленных. Код был изменен для этого.

...