2011-04-24 120 views
0

它看起来像我可以得到整个数组的平均值,但不是数组中的每个项的平均值。我想避免一些循环。 我使用它的函数AVG()。从数组中获得平均值

$sql_statement = "SELECT AVG(answer) AS averageanswer 
       FROM answer2 
       WHERE question_id 
       IN(".implode(",", $qid).") 
       AND answer <= 5 
      "; 

$dblink = mysql_connect($DBhost, $DBuser, $DBpassword); 
mysql_select_db($DB,$dblink); 
$qry = mysql_query($sql_statement,$dblink); 

while($averageanswer=mysql_fetch_array($qry)) { 
    $average[] = round($averageanswer['averageanswer']); 
} 

当我打印数组这就是结果:

Array ([0] => 4) 

是否有人以前遇到同样的问题,或者没有人知道我的解决方案吗?欢迎所有提示!

+0

你期待什么结果呢?我们需要查看数据库中的数据。 '4'可能是完全有效的平均值。 – 2011-04-24 11:33:53

+0

数组$ qid中每个元素的平均值是4.确实,我得到的输出是4.但我不想要1的输出。我的输出应该看起来像Array([0] => 4 [1 ] => 4 [2] => 4 [3] => 4)。 – Proto 2011-04-24 11:41:31

+0

什么是“它”?你想达到什么目的?你的代码被破坏了,所以我们无法弄清楚你想从中做什么。 – 2011-04-24 12:01:36

回答

4

我认为你需要每个问题的平均结果。在这种情况下:

$sql_statement = "SELECT AVG(answer) AS averageanswer 
       FROM answer2 
       WHERE question_id 
       IN(".implode(",", $qid).") 
       AND answer <= 5 
       GROUP BY question_id 
      "; 

$dblink = mysql_connect($DBhost, $DBuser, $DBpassword); 
mysql_select_db($DB,$dblink); 
$qry = mysql_query($sql_statement,$dblink); 

while($averageanswer=mysql_fetch_array($qry)) { 
    $average[] = round($averageanswer['averageanswer']); 
} 

这将导致一列,每question_id,包含答案的平均任何行与question_id

+0

谢谢!当然 :) – Proto 2011-04-24 18:19:44