尝试在MYSQL数据库中查找数组的中位数。
目前,我正在抓住我的数据:
$middleMonth = "SELECT Day, COUNT(Day) AS totalNumber FROM finalbaby GROUP BY Day ORDER BY COUNT(Day) DESC LIMIT 1, 300";
$middleResult = mysql_query($middleMonth);
然后我将它放入一个像这样的数组中。
$names=array();
while($row = mysql_fetch_assoc($middleResult)) {
$names[] = $row['Day'];
然后我试图找到该数组的中位数:
sort($names);
$count = count($names);
$middleval = floor(($count-1)/2);
if($count % 2) {
$median = $names[$middleval];
} else {
$low = $names[$middleval];
$high = $names[$middleval+1];
$median = (($low+$high)/2);
}
return $median;
}
var_dump($names);
我没有收到任何错误,但它会导致我的应用程序崩溃。
有关我做错的任何建议吗?
答案 0 :(得分:1)
你在第三个代码块之前用你的第二个代码黑色关闭了吗?
回答:
我在最后一次关闭}
失败...在第二个代码块中关闭,然后在第三个代码块中运行代码...这将只找到一次中位数,而不是每次从mysql返回的行设置名称时都试图找到中位数。第一次,名字的数量将是1,然后你减去1 = 0并除以2。这将给你0.然后你尝试得到0和2的余数。这会抛弃你的其余代码。试试这个:
$middleMonth = "SELECT Day, COUNT(Day) AS totalNumber FROM finalbaby GROUP BY Day ORDER BY COUNT(Day) DESC LIMIT 1, 300";
$middleResult = mysql_query($middleMonth);
$names=array();
while($row = mysql_fetch_assoc($middleResult)) {
$names[] = $row['Day'];
}
sort($names);
$count = count($names);
$middleval = floor(($count-1)/2);
if($count % 2) {
$median = $names[$middleval];
} else {
$low = $names[$middleval];
$high = $names[$middleval+1];
$median = (($low+$high)/2);
}
echo $median;
var_dump($names);
//previous code
//if this code is inside function then return if not then print
//return $median;
//if this code is inside function then the return above will cancel this var_dump
//var_dump($names);
还请记住
警告! 自PHP 5.5.0起,此扩展已弃用,将来将被删除。相反,应使用MySQLi或PDO_MySQL扩展名。有关详细信息,另请参阅MySQL: choosing an API指南和related FAQ。