2014-03-12 31 views
1

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

$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); 
+0

除了更多的细节,是的,那会做,但你有没有尝试过?它不起作用吗?你使用的是哪个数据库? – hd1

+0

这个工程,我只是不知道如何将foreach循环加入到将它们添加到一起? – user2250471

+2

为什么你不让MySQL计算平均值? – Mike

回答

1

在这里你去,在PHP中:

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

不过,由于在评论中指出,使用SQL是您最高性能的选择。让我知道你是否需要更多的帮助。

+0

谢谢,你能看看我所做的编辑,看看我是否做错了什么? – user2250471

+0

'print_r($ query_fetch);'可以肯定,但我怀疑你想'$ query_fetch [0]' – hd1

+1

你知道你可以简化'$ count = $ count + 1;'为'$ count ++'。而不是有'$ count',只要'count($ array)'。如果它是一个数组的数组,就像你所拥有的那样,你可以将整个事物简化为'array_sum($ array)/ count($ array)'。 – Mike