我目前的代码可以从数据库中提取数据,然后对其中的一部分进行一些数学运算,然后将其打印到表中。但是,我想将打印的数字从大到小排列。我熟悉查询中的排序,但是查询不知道最终结果是什么。重新排列这些数据的最有效方法是什么。
<?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
最佳答案
首先将您的计算存储回
$row
(看起来$hourAmount
丢失了——我认为这是$rate
,希望我没猜错):$inGameID = $row['inGameID'];<br/> $volume = $row['size'];<br/> $rate = $row['officialCorpRate'];<br/> $name = $row['name'];<br/> $hourlyYield = $row['hourlyYield'] = $rate /$volume;<br/> $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 端完成。
关于php - 打印前重新排列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14269420/