Изменение порядка данных перед печатью
В настоящее время у меня есть код, который извлекает данные из БД, затем делает некоторую математику на ее части, а затем печатает ее в таблицу. Однако я хотел бы расположить числа, напечатанные от больших до самых маленьких. Я знаком с порядком в запросе, однако запрос не знает, каким будет конечный результат. Каков был бы наиболее эффективный способ переупорядочить эти данные?
<?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
2 ответа:
Сначала сохраните ваши вычисления обратно в
$row
(похоже, что$hourAmount
отсутствовал-я предположил, что это было$rate
, надеюсь, я правильно понял):
$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.