SQL中来自条目的PHP计数总计-最佳实践方法

时间:2019-05-07 12:35:01

标签: php mysql database logic coding-efficiency

不是什么大问题,而是更多地寻求最佳实践和最有效的解决方案。

我有一些代码可以读取sql表中的userID的所有行,并且可以将它们正确打印。每行包含{销售编号-D_No-类别1-类别2-日期}。

现在,对于每一行,我可以拥有大量的if语句等,以查看类别是否等于某个字段,然后将1加到一个这样的变量中。但是我想要更有效的方法。在其中创建自己名称的变量或将其添加到现有名称的变量中。

这是现有代码的摘要:

while ($row = mysqli_fetch_assoc($result)) {
        echo "<tr>";
        foreach ($row as $field => $value) {
                foreach ($salesItemsArray as $saleItem){
                    if (strpos($value, '******CategoryNAME******') !== false){

                }
            }           
            echo "<td>" . $value . "</td>"; // I just did not use "htmlspecialchars()" function. 
        }
        echo "</tr>";
    }
    echo "</table>";

因此,如果我将***** CategoryNAME *****替换为实际类别,并对每个类别重复此操作,或者使用等价的切换命令(如果使用php,则此代码从本质上(可能需要进行一些编辑)起作用有一个?)。但是,如果我可以让程序在每次看到新类别时创建一个名为$ category Name 的变量,然后每隔一次将其添加1,它将适用于任何类别名称,并且会更多高效且简单。

这有可能吗,还有什么想法可以实现吗?

如果需要,可将部分重新表述。


updated attempt at code :

foreach ($row as $field => $value) { // I you want you can right this line like this: foreach($row as $value) {
                foreach ($salesItemsArray as $saleItem){
                    if (strpos($value, $saleItem) !== false){
                        $foo[$saleItem] = $foo[$saleItem] + 1;
                }
                foreach ($foo as $saleTotal){
                    echo $saleTotal."<br/>".$foo[$saleTotal];       
                }
            }           
            echo "<td>" . $value . "</td>";

希望最终代码可以编辑帖子

感谢我对此的评论。但是有一点问题,那就是每个$ foo [$ saleItem]组合在回显时都会有1个。从数据库的角度来看,应该只有1项和1项,数组中的所有其他项及其变量0 ...

while ($row = mysqli_fetch_assoc($individualResult)) {
        echo "<tr>";
        foreach ($row as $field => $value){
                foreach ($salesItemsArray as $saleItem){
                    if (strpos($value, $saleItem) !== false){
                        if(isset($foo[$saleItem])) { $foo[$saleItem] += 1; } else { $foo[$saleItem] = 1;}
                        echo $saleItem;
                }
                foreach ($salesItemsArray as $saleTotal){
                    echo $foo[$saleTotal];
                    if ($foo[$saleTotal] > 0){
                        echo $saleItem."+".$foo[$saleTotal];
                        }       
                    }
                }           
                echo "<td>" . $value . "</td>";
            echo "</tr>";
        }

0 个答案:

没有答案