У меня проблема с форматом чисел в php - PullRequest
0 голосов
/ 04 марта 2019

Я хочу, чтобы мои пользователи могли хранить значения в переменной $_SESSION, у меня есть этот код:

<?php
if(!empty($_SESSION["shopping_cart"])) {
    $total = 0;
    foreach($_SESSION["shopping_cart"] as $keys => $values) { ?>
        <tr>
            <td><?php echo $values["item_name"]; ?></td>
            <td><?php echo $values["item_quantity"]; ?></td>
            <td>฿<?php echo $values["item_price"]; ?></td>
            <td><?php echo number_format($values["item_quantity"] *
                    $values["item_price"], 7); ?></td>
            <td><a href="atcform.php?action=delete&id=<?php echo $values["item_id"]; ?>
            "><span class="remove-span">Remove</span></a></td>
        </tr>
        <?php
        $total = $total + ($values["item_quantity"] * $values["item_price"]);
    }
    ?>
    <tr>
        <td colspan="3" align="right">Total</td>
        <td align="right">$<?php echo number_format($total, 7); ?></td>
    </tr>
    <?php
}
?>

Когда я запускаю его, он говорит:

Уведомление: Неправильно сформированное числовое значение, обнаруженное в C: \ Users \ auser \ Desktop \ XAMPP \ htdocs \ Website1 \ atcform.php в строке 76 и строке 72

Эти две строки находятся там, где number_format s, я хотел бы устранить эти ошибки, сообщите мне, если вам нужно больше кода.

Вот текущее изображение: screenshot

Спасибовы!

1 Ответ

0 голосов
/ 04 марта 2019

Похоже, что одно из значений внутри number_format() не имеет числового типа.

Попробуйте преобразовать числовые значения в floatval():

number_format(floatval($values["item_quantity"]) * floatval($values["item_price"]), 7);

Или даже лучше,убедитесь, что значения являются числами с плавающей точкой, прежде чем выполнять какие-либо числовые операции с ними, переназначив их в начале цикла.

foreach ($_SESSION["shopping_cart"] as $keys => $values) { 
    $values["item_quantity"] = floatval($values["item_quantity"]);
    $values["item_price"] = floatval($values["item_price"]);
....
...