【问题标题】:How to loop through array from a query to return the total?如何从查询中循环遍历数组以返回总数?
【发布时间】:2011-05-23 07:51:39
【问题描述】:

我正在尝试从数据库中获取总数。这是当前的设置。

我有许多记录,其中有一列名为 total_cost(十进制字段),我编写了一个 select 语句来选择所有 total_cost 并将其放入名为 $total_cost 的数组中。

现在我试图将所有成本加在一起以获得总和,并尝试使用这个。

foreach ($total_cost as $cost) :
$cost = $cost + $cost['total_cost'];
endforeach;

echo $cost;

那没用……

知道为什么吗?

【问题讨论】:

    标签: php mysql loops foreach


    【解决方案1】:

    你不需要使用循环,你可以像这样直接从 mysql 服务器检索总成本

    SELECT sum(total_cost) AS total_cost FROM tbl_name WHERE conditions ...
    

    上面会为满足条件的字段汇总total_cost并返回,这样就不用在php中循环了。

    为什么我推荐使用这个?假设您有 200 万条记录并且您想知道总成本,您当前的设置将请求 200 万条成本,将它们保存在内存中并循环遍历它们。不是很有效吗?当您可以直接从 mysql 中获取总和时,您不必在内存中保存 2Mil 键数组。

    【讨论】:

    • 好的,之后我该如何使用那个 total_cost 呢?它会成为 PHP 变量吗?所以我可以说 echo $total_cost?
    • 就像mysql返回一个充满id的数组一样,你只会得到一个变量
    【解决方案2】:

    您当前代码的问题是$code 在每次循环迭代开始时被覆盖。要修复此存储您的运行总计在不同的变量:

    $result = 0;
    foreach ($total_cost as $cost) :
    $result += $cost['total_cost'];
    endforeach;
    
    echo $result;
    

    【讨论】:

    • 天啊...每次都这么近,但到目前为止...我不知道为什么我看不到那些东西...该死的初学者...呵呵...谢谢,你钱是对的!
    猜你喜欢
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2021-03-25
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多