我正在尝试计算数组的中位数。我能够获得 MIN、MAX、AVG,但我对中位数和显示对信息进行排序的方式有困难。
我的问题是如何获得中位数,为每个状态单独使用一个函数。(状态为 A、C、E、L、P、W)
我的代码是:
<?php
echo "<p><b>A</b> = Active, <b>E</b> = Expired, <b>L</b> = Canceled, <b>P</b> = Pending, <b>W</b> = Withdrawn</p>\n";
// COUNT STATUS
include '_inc/include.php';
$query = "SELECT status, COUNT(status) FROM median GROUP BY status";
$result = mysql_query($query) or die(mysql_error());
// Print out result
while($row = mysql_fetch_array($result)){
echo "There are ". $row['COUNT(status)'] ." ". $row['status'] ." items.";
echo "<br />";
}
?>
显示为:
A = 活动,C = 已关闭,E = 已过期,L = 已取消,P = 待处理,W = 撤回
有6个A项目
有2个C项目
有9个E项目
有 4 L 项目
有2个P项目
我的代码是:
$query = "SELECT listprice, status, MIN(listprice), COUNT(status) FROM median GROUP BY status";
$result = mysql_query($query) or die(mysql_error());
// Print out result
while($row = mysql_fetch_array($result)){
echo "The MIN list price for the ". $row['COUNT(status)'] ." ". $row['status'] ." is $" . $row['MIN(listprice)'];
echo "<br />";
}
?>
显示为:
6 A 的最低标价为 139900.00 美元
2 C 的最低标价为 149900.00 美元
9 E 的最低标价为 138000.00 美元
4 L 的最低标价为 $229000.00
2 P 的最低标价为 $179000.00
MAX 和 AVG 与上述类似。
我试图包含一个计算中位数(MED)的函数
<?php
function median($arr)
{
sort($arr);
$count = count($arr); //count the number of values in array
$middleval = floor(($count-1)/2); // find the middle value, or the lowest middle value
if ($count % 2) { // odd number, middle is the median
$median = $arr[$middleval];
} else { // even number, calculate avg of 2 medians
$low = $arr[$middleval];
$high = $arr[$middleval+1];
$median = (($low+$high)/2);
}
return $median;
}
echo median(array($lp)) . "\n"; // 153500
echo "<p> </p>";
echo median(array(4.1, 7.2, 1.7, 9.3, 4.4, 3.2)) . "\n"; // 4.25
?>
这适用于静态数组,但我如何计算它看起来像上面的 MIN,MAX?
<?php
$i=0;
while ($i < $num) {
$ld=mysql_result($result,$i,"listdate");
$cd=mysql_result($result,$i,"closedate");
$contractd=mysql_result($result,$i,"contractdate");
$s=mysql_result($result,$i,"status");
$scd=mysql_result($result,$i,"statuschangedate");
$wd=mysql_result($result,$i,"withdrawdate");
$cand=mysql_result($result,$i,"canceldate");
$lp=mysql_result($result,$i, "listprice");
$sp=mysql_result($result,$i,"soldprice");
$gla=mysql_result($result,$i,"gla");
$b=mysql_result($result,$i,"built");
$o=mysql_result($result,$i,"owner");
$fs=mysql_result($result,$i,"fore");
$ss=mysql_result($result,$i,"shortsale");
$f=mysql_result($result,$i,"features");
?>
我想我遇到这么多麻烦的原因可能是表中的数据是通过文件上传(csv)上传的。但我认为这与它没有任何关系,因为数据已经存在。
我使用 $lp 作为 listprice 代替了中值函数中的静态数组,也就是说它是空白的。