0

Id ASC による mysql の並べ替えには、次のようなデータがあります。

注: 合計は mysql にありません。合計は 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

ご注文の際、 に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 に答える