我在php中的数字格式有问题

时间:2019-03-04 19:31:13

标签: php html session-variables number-formatting

我想让我的用户将值存储在$_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
}
?>

当我运行它时,它说:

  

注意:第76行和第72行在C:\ Users \ auser \ Desktop \ XAMPP \ htdocs \ Website1 \ atcform.php中遇到的格式不正确的数值

这两行是number_format所在的位置,我想消除这些错误,请告诉我是否需要查看更多代码。

这是当前图片: screenshot

谢谢!

1 个答案:

答案 0 :(得分:1)

看起来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"]);
....