打印前重新排列数据

时间:2013-01-10 23:53:31

标签: php mysql arrays html-table

我目前有代码从数据库中提取数据,然后对其中的一部分进行数学运算,然后将其打印到表中。但是,我想安排从大到小打印的数字。我熟悉查询中的排序,但查询不知道最终结果是什么。什么是重新安排这些数据的最有效方法。

<?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 个答案:

答案 0 :(得分:2)

  1. 首先将您的计算存储回$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;

  2. $row附加到$rows数组:$rows[] = $row;

  3. 如果您拥有所有$rows,请使用自定义比较函数对$rows数组进行排序。

    用户定义的比较:

    function cmp($a, $b)  
    {  
        if ($a['hourlyIncome'] == $b['hourlyIncome']) {  
            return 0;  
        }  
        return ($a['hourlyIncome'] < $b['hourlyIncome']) ? 1 : -1;  
    }
    
  4. 通过$rows

  5. usort($rows, $comp);进行排序
  6. $rows上执行标准循环以显示。
  7. 注意:在我看来,所有这些计算都可以在SQL端完成。

答案 1 :(得分:0)

好吧,我不知道它是否是最有效的方法,但您可以将计算出的数据存储在数组中然后对其进行排序。