【问题标题】:I have a problem with my number format in php我在 php 中的数字格式有问题
【发布时间】:2019-03-04 19:31:13
【问题描述】:

我想让我的用户将值存储在 $_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_formats 所在的位置,我想消除这些错误,如果您需要查看更多代码,请告诉我。

这是当前的图片:

谢谢!

【问题讨论】:

  • var_dump($values); 显示什么?这些值可能不是您认为的或应该的。
  • 跟大家一样的方向走,也许你的价格包含了货币。
  • 不是很明白,另外一件事我加了截图澄清
  • 即使给出了解决方案,您也可以使用 number_format 的 4 个选项进行检查。见php.net/manual/en/function.number-format.php

标签: php html session-variables number-formatting


【解决方案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"]);
....

【讨论】:

  • 谢谢!这解决了我的问题,现在所有错误都消失了,下一步是配置十进制值以便它们可以相乘
猜你喜欢
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 2021-01-02
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2019-04-01
  • 1970-01-01
相关资源
最近更新 更多