1

我创建了一个数据数组,我可以从中循环遍历特定字段并将这些值回显出来,但我需要做的是将这些值添加到一个新数组中,最终让我找到新数组中值的平均值大批。正如我所说,我可以回显数据,并且我想我已经知道如何获得平均值,只要我可以创建新数组!任何帮助将不胜感激,因为我无法在任何地方找到答案,而且我的人才不足!

我的表包含大约 25 个字段,我根据会话变量提取了一些行。在我正在处理的实例中,我只需要从表中的 1 列中获取值,然后将它们添加到数组中。下面的代码将循环遍历这些值,并一次回显它们 1:-

while ($cdarray=mysql_fetch_array($calldata))   {
echo $cdarray['score_total'];
}

这给了我 25555 这是我期望的 4 个值 25、5、5、5

我试过了

while ($cdarray=mysql_fetch_array($calldata))   {
$cdts = $cdarray['score_total'];
$cdtsar = array($cdts);
}

这导致 $cdts 被赋值为 5,

非常感谢任何帮助!

4

3 回答 3

1

这将从数组中获取您的数据,将其放入一个新数组中并计算平均值。

$cdtsar = array();

while ($cdarray=mysql_fetch_array($calldata))   {
 $cdtsar[] = $cdarray['score_total'];
}

$average = array_sum($cdtsar) / count($cdtsar);
于 2012-04-17T10:18:48.167 回答
1

它实际上打印了 25 和 5 以及 5 和 5,但中间没有空格,所以看起来像“25555”。要自己验证这一点:

while ($cdarray=mysql_fetch_array($calldata))   {
    echo $cdarray['score_total'];
    echo " / ";
}

要获得平均值,您可以使用

$sum = $count = 0;
$average = null;
while ($cdarray=mysql_fetch_array($calldata))   {
    $sum += $cdarray['score_total'];
    ++$count;
}

// Make sure to guard against divide by zero
if ($count) {
    $average = $sum / $count;
}

或者,如果可以选择更改查询,您可能会让数据库为您计算平均值。

于 2012-04-17T10:25:04.780 回答
0

如果要将元素分配给新数组,请像这样使用

$cdtsar = array();
while ($cdarray=mysql_fetch_array($calldata))   {
    array_push($cdtsar,$cdarray['score_total']);
}

求数组的平均值

$sum = array_sum($cdtsar);
$num = sizeof($cdtsar);
$avg = $sum/$num;
echo $avg;
于 2012-04-17T10:25:06.427 回答