【问题标题】:Get average from array从数组中获取平均值
【发布时间】:2011-04-24 11:28:09
【问题描述】:

看起来我可以得到整个数组的平均值,但不能得到数组中每个项目的平均值。我想避免一些循环。 我为此使用了函数 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 )

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

【问题讨论】:

  • 您期待什么结果?我们需要查看数据库中的数据。 “4”可能是一个完全有效的平均值。
  • 数组$qid中每一项的平均值是4。确实我得到的输出是4。但是我不想要4的1输出。我的输出应该看起来像Array ( [ 0] => 4 [1] => 4 [2] => 4 [3] => 4)。
  • 什么是“它”?你想达到什么目的?您的代码已损坏,因此我们无法确定您想从中做什么。
  • BTW 数据库没有“数组”。

标签: php sql average


【解决方案1】:

我假设您想要每个问题的平均结果。在这种情况下:

$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 的任何行的答案的平均值

【讨论】:

    猜你喜欢
    • 2016-07-08
    • 2021-08-30
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 2021-09-26
    • 2013-02-28
    • 2023-01-27
    • 1970-01-01
    相关资源
    最近更新 更多