【问题标题】:Putting values into an array and using array_sum将值放入数组并使用 array_sum
【发布时间】:2017-10-16 22:23:42
【问题描述】:

好吧,我有点卡住了,我知道我在这里缺少一个简单的东西,所以希望新鲜的眼睛会有所帮助

我有一列中的值存储为 2:7:99 等,每个值由以下分隔:

现在我可以将所有值分离出来并查询另一个表以获取与该值对应的价格。

我遇到的问题是对所有价格值进行求和 请参阅下面的代码 我认为最简单的方法是将所有价格值添加到一个数组中,然后执行 array_sum() 但由于某种原因我无法让它工作

** 请不要提及 SQL 注入 .. 它在本地机器上,没有外部访问权限,只有我自己会使用它

    <?php
include('config.php');
// Function for calculation Rough Invoice Total
function basicTotal() {
    $con = mysqli_connect("localhost","USER","PASS","TABLE");
    $wtbdq = mysqli_query($con,"SELECT * FROM `jobs` WHERE wsjid = '18'");
    $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 = array($pricer['incvat']);

            echo $item.' - '. $pricer['incvat'].'<br>';

        }

    } while($wtbdr = mysqli_fetch_assoc($wtbdq));

    $total = array_sum($price);
    echo $total;
}
basicTotal();
?>

提前致谢

【问题讨论】:

  • $total = 0; foreach(...) {... $total += $pricer['incvat']; ...} 怎么样?
  • 为什么不使用 SELECT *, SUM(incvat) AS total FROM workshop-items WHERE wsiid = '$item' ?

标签: php arrays mysqli array-sum


【解决方案1】:
just replace  $price = $pricer['incvat']; 

with this in your code

$price[] = $pricer['incvat'];

【讨论】:

    【解决方案2】:

    你一直在覆盖你的最终价格:

    $price = array($pricer['incvat']);
    

    替换为:

    $price[] = $pricer['incvat'];
    

    【讨论】:

    • 知道为什么它将所有记录的值相加而不仅仅是当前行
    • 应该只添加来自SELECT * FROM jobs WHERE wsjid = '18'的那些。调试此查询未返回您用于获取价格的所有 ID。但是你可以多解释一下现在到底发生了什么。我认为你应该提出一个新问题。
    • 您好,我提出了一个新问题,显示所有代码stackoverflow.com/questions/44028136/…
    【解决方案3】:

    您当前方法的问题是您正在覆盖$price 变量。您需要将值推送到$price 数组中,例如$price[] = $pricer['incvat']。你需要这样做

        <?php
    include('config.php');
    // Function for calculation Rough Invoice Total
    function basicTotal() {
        $con = mysqli_connect("localhost","USER","PASS","TABLE");
        $wtbdq = mysqli_query($con,"SELECT * FROM `jobs` WHERE wsjid = '18'");
        $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'];
    
                echo $item.' - '. $pricer['incvat'].'<br>';
    
            }
    
        } while($wtbdr = mysqli_fetch_assoc($wtbdq));
    
        $total = array_sum($price);
        echo $total;
    }
    basicTotal();
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 2019-02-04
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多