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