因此,我有一个MySQL数据库表,用于存储订单ID和价格。价格可以是动态的也可以是静态的。

因此,例如:

订单编号|价钱

1 | 205.99

2 | 215.95

3 | 217.88

4 | $ marketrate

5 | $ marketrate * 1.02

6 | 212.99

在我的php页面上

include "prices.php";
$sql="Select `Order ID`, `Price` from `table` ORDERBY `price`";
$result=mysql_query($sql);

while($row = mysql_fetch_assoc($result)){

        echo "<tr ".$tr_class.">\n";
        foreach ($row as $field=>$value) {


            eval('$value = ' . $value . ';');
            echo "<td>" . $value . "</td>\n";

        }
        echo "</tr>\n";



    }


因此,您看到我使用eval()来评估价格变量并显示它,prices.php定义了所有价格,例如$ marketrate和whatnot。

我的问题是,如何按评估价格订购?当我在mysql语句中使用orderby时,它将根据静态数字对数组进行排序,然后将变量命名为$ marketrate,这显然是错误的,因为$ marketrate不是数字。我需要它根据$ marketrate的评估值对数组进行排序。

是否可以以某种方式求值$ result数组中的所有变量,然后使用PHP排序函数对数组重新排序?

编辑:试图把eval('$ result ['Price'] ='。$ result ['Price']。';');在那里,但是没有用。

最佳答案

首先循环遍历您的MySQL结果,将产品放入数组中,对数组进行排序,然后遍历数组以输出HTML表

$priceValues = array(); // create an empty array to hold your prices
while($row = mysql_fetch_assoc($result)){

    foreach ($row as $field=>$value) {

        eval( '$priceValues[] = ' . $value . ';' ); // append the new value to the array
    }
}

sort( $priceValues ); // sort values from lowest to highest

// Then output the HTMl table
echo "<tr ".$tr_class.">\n";

foreach ($priceValues as $price) {
    echo "<td>" . $price . "</td>\n";
}

echo "</tr>\n";


但是,诉诸eval通常是一个不好的信号,在您的情况下,无需这样做。您应该真正更改表结构,并为市场汇率乘数添加一列。这样,您可以直接select产品(市场价格*乘数)并按产品排序。

关于php - 评估存储在数组变量中的变量,然后根据评估值对该数组重新排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20003902/

10-11 21:51
查看更多