0

При работе с функцией, которая считает стоимость купленного товара, я столкнулся с проблемой, когда пытался вывести сумму полученных результатов. Сумма всегда равна 0. В чем может быть проблема?

function calc($things, $prices, $amount){
                    if (is_numeric($amount) and $amount!=0){
                        $result=$prices*$amount;
                        echo "Товар \"$things\" по цене \"$prices\" в количестве \"$amount шт\" обойдется в - ".$result."<br>";
                        return $result;
                    }
                    else{
                        $amount=0;
                    }
                }
                if(isset($_POST["calc"])){
                    $milk_amount=$_POST["milk"];
                    $bread_amount=$_POST["bread"];
                    $cookie_amount=$_POST["cookie"];
                    $eggs_amount=$_POST["eggs"];
                    $things=["Молоко","Хлеб","Печенье","Яйца (10шт)"];
                    $amount=[$milk_amount,$bread_amount,$cookie_amount,$eggs_amount];
                    $prices=[65,42,120,29];
                    for ($i=0; $i<count($things); $i++) { 
                        calc($things[$i],$prices[$i],$amount[$i]);
                    }
                    $strgs[]=$result;
                    echo"Итого: ".array_sum($strgs);
                }
?>```

Прилагаю скриншот результата работы этого кода: кусок страницы

Scienk
  • 3
  • Воспользуйся отладкой ↑↑↑ Посмотри что у тебя в коде происходит, чтобы самому найти косяк – Алексей Шиманский Aug 31 '22 at 14:09
  • 1
    на данный момент у тебя $result всегда неопределён (соответствено в $strgs ничего особо быть не может).... а там, где определяется - тут же делается return – Алексей Шиманский Aug 31 '22 at 14:11
  • Спасибо, попробую какие-нибудь средства) – Scienk Aug 31 '22 at 14:21

1 Answers1

0
$total = 0;
for ($i=0; $i<count($things); $i++) { 
    $res = calc($things[$i],$prices[$i],$amount[$i]);
    $total += $res;
};
echo"Итого: $total";

А теперь ваш вариант подсчета суммы(если вам только сумма нужна - нет смысла собирать массив):

$strgs = [];
for ($i=0; $i<count($things); $i++) { 
  $strgs[] = calc($things[$i],$prices[$i],$amount[$i]);
}
echo"Итого: ".array_sum($strgs);
  • Я хотел собрать массив, чтобы в дальнейшем выбирать из него определенные значения, я понимаю, что не всегда это необходимо =) Спасибо огромное! Все заработало с $strgs=[], то что Вы последнее написали. – Scienk Aug 31 '22 at 14:20