【问题标题】:PDO - add values from several rows to get averagePDO - 将几行中的值相加以获得平均值
【发布时间】:2014-03-12 23:25:34
【问题描述】:

我有一个返回行数的 PDO 查询。每行包含一个整数,接下来我要做的是将所有整数相加,这样我就可以将它除以行数得到平均值。我会使用 foreach 循环吗?

$rates = $users->rate_count($id);
$ratecount = count($rates);

编辑:可以使用 SQL - 谢谢大家:

public function rate_average($id) {
    $query = $this->db->prepare("SELECT AVG(rate) FROM `ratefeed` WHERE post=?");
    $query->bindValue(1, $id);
    try{
        $query->execute();
    }catch(PDOException $e){
        die($e->getMessage());
    }
    return $query->fetchColumn();
}


$rateaverage = $users->rate_average($id);

【问题讨论】:

  • 除非有更多细节,是的,这样就可以了,但是您尝试过吗?它不工作吗?你用的是什么数据库?
  • 这行得通,我只是不知道如何措辞 foreach 循环以使其将每一行添加在一起?
  • 为什么不让 MySQL 计算平均值?
  • MySQL AVG() 函数执行此操作。不要下载整个数据库来做简单的数学运算。
  • 您要查找的是fetchColumn(),而不是fetch()

标签: php mysql pdo average


【解决方案1】:

在这里,在 PHP 中:

$count = 0;
$sum = 0;
foreach ($array as $element) {
   $count = $count + 1;
   $sum = $sum + $element;
}
print_r($sum/$count);

尽管如此,正如 cmets 中所指出的,使用 SQL 是您最好的选择。如果您需要更多帮助,请告诉我。

【讨论】:

  • 谢谢,你能看看我所做的编辑,看看我做错了什么吗?
  • print_r($query_fetch); 可以肯定,但我怀疑你想要$query_fetch[0]
  • 您知道您可以将$count = $count + 1; 简化为$count++。而不是拥有$count,只需使用count($array)。如果它是一个数字数组,正如你所拥有的,你可以将整个事情简化为array_sum($array) / count($array)
  • @Mike OP 没有指定他使用的类型,我想明确一点,随意编辑你喜欢的答案,我会批准
猜你喜欢
  • 2021-06-23
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
  • 2021-05-30
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多