因此,我有一个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/