我目前有代码从数据库中提取数据,然后对其中的一部分进行数学运算,然后将其打印到表中。但是,我想安排从大到小打印的数字。我熟悉查询中的排序,但查询不知道最终结果是什么。什么是重新安排这些数据的最有效方法。
<?php
$hourAmount = $mlYeild * (3600 / $cycleTime);
$oreVolumePriceQuery = "SELECT od.oreID, od.inGameID, od.size, ir.officialCorpRate FROM oreData od JOIN itemRates ir ON od.inGameID = ir.typeID order by od.oreID asc";
$oreVolumePriceResult = mysql_query($oreVolumePriceQuery);
$hourYeild = $mlYeild * (3600 / $cycleTime);
?>
<TABLE>
<TR>
<TD><h1>Ore</h1></TD>
<TD><h1>Hourly Yeild</h1></TD>
<TD><h1>Hourly Sale</h1></TD>
</TR>
<?php
$ores = array();
While($row = mysql_fetch_assoc($oreVolumePriceResult)){
$inGameID = $row['inGameID'];
$volume = $row['size'];
$rate = $row['officialCorpRate'];
$name = $row['name'];
$hourlyYeild = $hourAmount/$volume;
$hourlyIncome = $hourlyYeild * $rate;
echo "<TR>";
echo "<TD>".$name."</TD>";
echo "<TD>".$hourlyYeild."</TD>";
echo "<TD>".$hourlyIncome."</TD>";
echo "</TR>";
}
?>
</TABLE>
简而言之,根据进来的数据,我希望通过$hourlyIncome desc
安排
答案 0 :(得分:2)
首先将您的计算存储回$row
(看起来$hourAmount
似乎丢失了 - 我认为这是$rate
,希望我做对了):< / p>
$inGameID = $row['inGameID'];
$volume = $row['size'];
$rate = $row['officialCorpRate'];
$name = $row['name'];
$hourlyYield = $row['hourlyYield'] = $rate /$volume;
$hourlyIncome = $row['hourlyIncome '] = $hourlyYield * $rate;
将$row
附加到$rows
数组:$rows[] = $row;
如果您拥有所有$rows
,请使用自定义比较函数对$rows
数组进行排序。
用户定义的比较:
function cmp($a, $b)
{
if ($a['hourlyIncome'] == $b['hourlyIncome']) {
return 0;
}
return ($a['hourlyIncome'] < $b['hourlyIncome']) ? 1 : -1;
}
通过$rows
usort($rows, $comp);
进行排序
$rows
上执行标准循环以显示。注意:在我看来,所有这些计算都可以在SQL端完成。
答案 1 :(得分:0)
好吧,我不知道它是否是最有效的方法,但您可以将计算出的数据存储在数组中然后对其进行排序。