0

我在 mysql 中有这样的数据,按 id ASC 排序:

注意:total 不在 mysql 中,total 来自 price * total_item -> 例如

     id       name         total
    ----   -----------   ----------
     1        item1          3
     2        item2          5
     3        item3          1
     4        item4          2
     5        item5          4

我想在 php 中对其进行排序

首先,我对总数进行排序以获得最高的总数

//insert total into list
for($i=0;$i<5;$i++){
  $total_list[] = $total;
  $b = $total_list;
  rsort($b);

  //display total from highest to lowest
  echo $b[$i];
}

结果将是这样的:

         id       name         total
        ----   -----------   ----------
         1        item1          5
         2        item2          4
         3        item3          3
         4        item4          2
         5        item5          1

好的,我已经根据上面的代码对总数进行了排序

所以要对名称进行排序,我必须对其进行排序,但我已经尝试过与对总数进行排序相同的方式,但结果不同

不,我想要的结果是这样的

         id       name         total
        ----   -----------   ----------
         1        item2          5
         2        item5          4
         3        item1          3
         4        item4          2
         5        item3          1
4

2 回答 2

1

这可以(并且应该)全部从 SQL 查询中完成;就像是:

SELECT `id`, `name`, `price` * `total_item` AS `total`
FROM `mytable`
ORDER BY
  `price` * `total_item` DESC,
  `id` ASC

ing时ORDER,不能使用 中给出的名称AS,但可以按相同计算排序。

于 2013-06-27T06:06:03.040 回答
0

我尝试过这样的事情:使用asort

$data = array(
"item1"=>"1",
"item2"=>"2",
"item3"=>"5",
"item4"=>"3",
"item5"=>"4"
);

asort($data);

print_r($data);

Resut: Array ( [item1] => 1 [item2] => 2 [item4] => 3 [item5] => 4 [item3] => 5 )

为了获取highest total value and name,获取数组的最后一个元素。尽管您可以使用foreach.

如果我们像这样添加 foreach:

foreach($data as $key=>$val){
    echo "Name:".$key."  Total:".$val."<br>";
}

Result:

Name:item1 Total:1
Name:item2 Total:2
Name:item4 Total:3
Name:item5 Total:4
Name:item3 Total:5
于 2013-06-27T06:01:50.523 回答