【问题标题】:PHP trying to calculate total of variables from an arrayPHP试图从数组中计算变量总数
【发布时间】:2020-09-23 17:08:00
【问题描述】:

所以我正在做与之前在 JScript 中为一项任务所做的相同的购物清单,但现在在 PHP 中。当我尝试计算总数时,它给了我一个奇怪的数字。

$result 是产品价格乘以数量(waarde & aantal,荷兰语)的计算结果。

所以当我做 $total += $result;

然后我重复那个,我得到了一个非常奇怪的结果。

在我看来,它似乎并不符合所有结果。我尝试使用 $i 索引。但这不起作用。我错过了什么?

(对 PHP 很陌生,刚学了一点 JavaScript 基础)

预期结果是表中显示的所有总数相加得出总数:15.76

现在的结果是 31.984.85.98,这个神奇的数字是多少?可能是我对数字格式做错了,现在也在调查。 (像我一样共享代码也是正常的吗?显然它不是真正的 PHP,我猜是因为它是服务器端的东西)我有一个原始 JavaScript 版本的 CodePen:https://codepen.io/3lly/pen/oNxaPKg 可能是为了清晰的视图,你可以明白我的意思。所有总列单元格的总数。

table {
     
    margin-top: 20px;
    display: inline-block;
    
}
 
th, td , input {
    border: 2px solid #FFB000;
    padding: 2px;
    color: black;

}

body {
    text-align: center;
  
}
h1 {
    color: #FFB000;
    font-family: impact;
    text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
}
p {
    color: white;
}
 
div {
    display: inline-block;
}
 
#add {
    display: inline-block;
    padding: 10px 20px;
    background: orange;
    box-shadow: -3px 3px black, -2px 2px black, -1px 1px black;
    border: 1px solid orange;

}

#add:hover {
    background: green;
    color: white;
}

input[type="text"], input[type="number"] {
    background-color: skyblue;
}

input[type="number"]:hover {
    background-color: black;
  }

#totaal {
    border: 2px solid #FFB000;
    background-color: #282828;
    padding: 5px;
    color: skyblue;
    
}

#totaal:hover{
    background-color: green;
    color: white;
}
<head>
<link rel="stylesheet" href="style.css">  
    <title>Boodschappenlijst</title>
</head>
<body>
    <h1> Boodschappenlijst </h1>
    <div id="container"></div>
    <table>
        <tr>
        <?php
        $headerTexts = ['Name', 'Prijs', 'Aantal', 'Totaal'];
        for($i=0;$i<count($headerTexts);$i++) {    
            echo "<th>" . $headerTexts[$i] . "</th>";   
        }
        ?>
        </tr>
        <?php  
     
            for($i=0;$i<count($products);$i++) {
                //result calculations
                $total = 0;
                 $result = number_format($products[$i]['waarde'] * $products[$i]['aantal'],2);
                 $total += $result;
                 echo $total;
                 //echo "<pre>" . is_int($products['waarde']) .  "</pre>";
                //Table Rows
                echo    "<tr>";
                echo    "<td>" . $products[$i]['omschrijving']  . "</td>" . 
                        "<td>" . $products[$i]['waarde'] . "</td>" . 
                        "<td>" . $products[$i]['aantal'] . "</td>" . 
                        "<td>" . $result . "</td>";
                echo    "</tr>";                  
        }   

        ?>
        </tr>
    </table>
    <p>Naam</p>
    <form>
        <input type="text" name="item" id="naam" /><br />
            <p>Aantal</p>
        <input type="text" name="quantity" id="qty" /><br />
            <p>Prijs</p>
        <input type="text" name="price" id="prijs" /><br/><br />
        <input type="button" value="Add Product" onclick="updateTable()" id="add"><br /><br />
    </form>
    <div id="totaal"></div>
    <!-- <script src="script.js"></script>-->
</body>
</html>

【问题讨论】:

  • 可能不会echo $total;for 中的 count($products) 也有些低效,它会在每次迭代时计算。应该分配给变量然后使用。我也会在这里使用foreach 而不是for。 (也将在数学之后使用number_format
  • 移动 $total = 0;在 for 循环上方并在循环内回显 $result 并在循环后回显 $total。 (因为你使用 $total 就像它的总数一样)
  • 要尝试对总和的来源进行逆向工程,了解您要添加的具体数字会很有帮助。
  • 对不起各位!谢谢我明白了:$products[$i]['total'] = $products[$i]['waarde'] * $products[$i]['aantal'];将其推送到数组,然后 $total += $products[$i]['total'];它有效 :D 但谢谢,因为在这些 cmets 之后我有一些东西要学(并且将 $total 变量放在循环上方很好哈哈)
  • 添加您的答案以帮助他人:)

标签: php html sum calculation


【解决方案1】:

所以我将每个产品的总计算结果推送到我以前没有这样做的数组中:

 $products[$i]['total'] = $products[$i]['waarde'] * $products[$i]['aantal'];

接下来我是这样计算的:

 $total += $products[$i]['total'];

在循环内。并且修复了它:D它很简单!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多