php - 评估存储在数组变量中的变量并根据评估值重新排序该数组?

标签 php mysql arrays sorting

所以我有一个 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/

相关文章:

php - MySQL连接服务器-客户端

mysql - CSV每行插入MySQL python

php - 当相关下拉列表刷新页面时,将输入框值存储为变量

mysql - 带子查询优化的sql查询

ios - 数组已填充,但括号外为空?

javascript - ajax登录脚本的问题

php - 无法使用 password_verify($password, $hash)

php - 使用PHP的“Notice: Undefined variable”,“Notice: Undefined index”和“Notice: Undefined offset”

python - 分配给逻辑索引 Numpy 数组

codeigniter 中的 PHP array_sum 函数