2012-04-17 109 views
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); 
} 

被分配一个值5导致$ cdts,

任何帮助,不胜感激!

+0

使用array_push的元素推向新的数组 – nithi 2012-04-17 10:17:47

回答

1

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

$cdtsar = array(); 

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

$average = array_sum($cdtsar)/count($cdtsar); 
+0

谢谢你非常 - 我已经使用了这个,并且包括了我想要在'if'中查找平均值的平均总和,以检查计数不是第一个。 – Ben21 2012-04-17 11:34:59

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; 
} 

或者你可能有数据库计算平均值为你,如果更改查询是一个选项。

+0

谢谢你 - 我在你的代码中加入了一个你的零级卫士版本。 – Ben21 2012-04-17 11:33:40

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;