0

我正在编写一个脚本来计算一组数据的众数、中位数和均值。我有十条记录存储在 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] => 1 [数量] => 144 )

所以真的,查询带来了所有的记录,而不仅仅是一个。

4

2 回答 2

1

嗯,原因是因为你只取一行,因此一个数字......

$arr = array();

while ($result_array = mysql_fetch_row($data)) {
    $arr[] = $result_array[0];
}

在此代码之后,您应该能够计算正确的值。

于 2012-08-12T12:31:20.417 回答
0

我不知道这是否有帮助,但你可能想挖掘 mysql-fetch array() 并在那里遵循那里的建议, 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; 
} 
于 2012-08-12T11:51:18.253 回答