我正在編寫一個腳本來計算一組數據的模式,中位數和平均值。我有10個記錄存儲在MySQL數據庫和PHP數組中。當腳本完成時,腳本將只使用存儲在數據庫中的數據而不是PHP數組,PHP數組用於測試代碼。當使用MySQL查詢數組時,獲得不同的結果,與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);
?>
人有什麼想法?
UPDATE:
我一直在玩的MySQL查詢,並使用下面的代碼:
$data = mysql_query("SELECT * FROM example") or die(mysql_error());
$arr = mysql_fetch_assoc($data);
print_r ($arr);
顯示以下,唯一的結果是:
陣列([ID ] => 1 [amount] => 144)
所以真的,查詢是bri記錄所有記錄,而不僅僅是記錄。
你確定你的數組php和數據庫中的值是一樣的嗎? – MimiEAM 2012-08-12 11:39:38
100%肯定。我使用PHP數組中使用的值填充MySQL數據庫,因爲我首先創建了PHP數組。 – mickburkejnr 2012-08-12 11:40:28
討厭成爲一個臭蟲,但中位數的計算方式不同: 如果數值的數量是偶數,就像這樣,你需要取兩個中間數的平均值(在本例中爲144和151),所以295/2 = 147.5 – 2012-08-12 12:18:40