【问题标题】:array_sum counting all records in result query not each row individuallyarray_sum 计算结果查询中的所有记录,而不是单独计算每一行
【发布时间】:2017-10-17 02:38:21
【问题描述】:

现在拔头发

我有一个查询数组中所有相关的 $price 值 基本上,初始查询会检查表中已完成但未开票的作业 第二个查询(在初始查询循环内)获取所有需要相加的项目(这些值在另一个表(workshop-items)中找到,并根据 $item 数组值进行检查

总数计算正常,我认为这与 $total 的放置位置有关,因为它加总所有返回的总数而不是单个行的总数

代码如下

<ul class="list-group">
<?php 
    $uninvoicedq = mysqli_query($con,"SELECT * FROM `workshop-jobs` WHERE completed = '1' AND invoiced = '0' AND wscid !='0' ORDER BY workstartdate ASC");
    $uninvoiced = mysqli_fetch_assoc($uninvoicedq);
    if($uninvoiced) {
        do { 
            // User Query
            $wscid = $uninvoiced['wscid'];
            $userq = mysqli_query($cona,"SELECT * FROM `users` WHERE userid = '$wscid'");
            $user = mysqli_fetch_assoc($userq);
            $wtbdq = mysqli_query($con,"SELECT * FROM `workshop-jobs` WHERE wsjid = '$uninvoiced[wsjid]'");
            $wtbdr = mysqli_fetch_assoc($wtbdq);
                do {
                    $wtbd = explode(":",$wtbdr['worktobedone']);
                    foreach($wtbd as $item) 
                    {
                        $priceq = mysqli_query($con,"SELECT * FROM `workshop-items` WHERE wsiid = '$item'");
                        $pricer = mysqli_fetch_assoc($priceq);

                        $price[] = $pricer['incvat'];
                        $items[] = $pricer['description'];
                        //echo $item.' - '. $pricer['incvat'].'<br>';
                    }

                    $total = array_sum($price);
                } while($wtbdr = mysqli_fetch_assoc($wtbdq));
?>
    <li class="list-group-item text-right" style="border:none;" title="<?php echo $itemview;?>"><span class="badge pull-left" style="background-color:#F00;">Not Invoiced</span><?php echo '&pound;'.$total.' - '; echo $user['forename'].' '.$user['surname'].' - ' .$uninvoiced['summary'];?> </li>
<?


                $itemList = implode(":",$items);
                $itemview = str_replace(":","\n",$itemList);
?>

<?          } while($uninvoiced = mysqli_fetch_assoc($uninvoicedq));
        } else { 
            echo "No Jobs Waiting To Invoiced";
        }
?>
        </ul>

【问题讨论】:

  • 您最近问了同样的问题。如果答案不符合您的要求,您为什么要接受它?
  • 确实很满意,这是一个他不知道的新问题
  • 这是一个新问题,旧问题的答案有效,这是一个新问题,但涉及相同的问题
  • P0IT10n 的回答应该可以解决您的问题。我还强烈建议在使用之前初始化 $price$items 数组(您可能已经这样做了,只是还没有发布代码)。
  • @matiaslauriti 你是绝对正确的,但想象一下在其他地方已经声明并使用了相同的变量,在这种情况下,你会将元素添加到预填充的数组并得到与你预期不同的结果.

标签: php array-sum


【解决方案1】:

如果您的意思是do while 的每一行应该是不同的总计,那么当do 开始时,设置$price = [];$price = array();null,因为您将添加所有以前的价格作为最终价格,如果您的最终价格是针对do while 的每个查询而不是针对孔,请照我说的做。

记得使用$total += 而不是$total =,因为你会覆盖你在主循环之外使用的变量,所以你会得到一个错误的总数。

【讨论】:

  • 是的 $price = [];像魅力一样工作!非常感谢,如果允许,将接受答案
  • 很高兴为您提供帮助!
猜你喜欢
  • 2014-08-25
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多