我正在编写一个脚本来计算出一组数据的模式,中位数和平均值。我有十条记录存储在MySQL数据库和PHP数组中。当脚本完成后,脚本将只使用存储在数据库中的数据而不是PHP数组,PHP数组就是用来测试代码的。
我发现,使用PHP数组与MySQL数组相比,结果有所不同。在PHP数组中,我有以下数据:
$arr = array(60, 70, 71, 76, 144, 151, 197, 229, 233, 233);
在我的MySQL数据库中,我有这段代码:
$data = mysql_query("SELECT amount FROM example") or die(mysql_error());
$arr = mysql_fetch_array($data);
数据相同,例外情况是MySQL数据在每条记录后包含.00
。在尝试找出错误结果的原因的过程中,我从数据库中的每条记录中删除了.00
。但数据仍然是错误的。
使用PHP数组时的结果给出了以下(正确)结果:
平均(平均)付款额£146.4
付款价值 最常发生的是233英镑。支付中位数£151
使用MySQL数组时的结果给出了以下(错误的)结果:
付款的平均(平均)值£144
发生的付款值 最常见的是£144。支付中位数£144
我无法解释为什么会这样。下面是我用来生成这些结果的PHP代码:
<?php
function arithmetic($array, $output = 'mean'){
switch($output){
// This case works out the mean
case 'mean':
$count = count($array);
$sum = array_sum($array);
$total = $sum / $count;
break;
// This case works out the median
case 'median':
rsort($array);
$middle = round(count($array) / 2);
$total = $array[$middle-1];
break;
// This case works out the mode
case 'mode':
$v = array_count_values($array);
arsort($v);
foreach($v as $k => $v){$total = $k; break;}
break;
}
return $total;
}
// PHP Array with data
//$arr = array(60, 70, 71, 76, 144, 151, 197, 229, 233, 233);
// MySQL Connection & Retrieval of data
$data = mysql_query("SELECT amount FROM example") or die(mysql_error());
$arr = mysql_fetch_array($data);
?>
有人有什么想法吗?
更新
我一直在玩MySQL查询,并使用以下代码:
$data = mysql_query("SELECT * FROM example") or die(mysql_error());
$arr = mysql_fetch_assoc($data);
print_r ($arr);
显示以下内容,仅显示结果:
数组([id] =&gt; 1 [数量] =&gt; 144)
实际上,查询带来了所有记录,而不仅仅是那个记录。
答案 0 :(得分:1)
嗯,原因是因为你只获取一行,因此只有一个数字......
$arr = array();
while ($result_array = mysql_fetch_row($data)) {
$arr[] = $result_array[0];
}
在此代码之后,您应该能够计算出正确的值。
答案 1 :(得分:0)
我不知道这是否有帮助,但您可能想深入了解mysql-fetch数组()并按照那里的建议, http://php.net/manual/en/function.mysql-fetch-array.php
特别检查您正在提取的数据是否设置正确。
function db_result_single($result) {
return ($row = mysql_fetch_row($result)) && isset($row[0]) ? $row[0] : false;
}