所以我有一个 MySQL 数据库表来存储订单 ID 和价格。价格可以是动态的,也可以是静态的。
例如:
订单 ID |价格
1|205.99
2|215.95
3|217.88
4|$市场价格
5|$市场价格*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之类的。
我的问题是,如何按评估价格订购?当我在 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
通常是一个坏兆头,在你的情况下没有必要这样做。您确实应该更改表结构并包含市场利率乘数列。这样您就可以直接选择
产品(市场价格 * 乘数)并按产品排序。
关于php - 评估存储在数组变量中的变量并根据评估值重新排序该数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20003902/