我有这样的数据在mysql排序中由id ASC:
注意:总数不在mysql中,总数来自价格* 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
答案 0 :(得分:1)
这可以(而且应该)都可以从SQL查询中完成;类似的东西:
SELECT `id`, `name`, `price` * `total_item` AS `total`
FROM `mytable`
ORDER BY
`price` * `total_item` DESC,
`id` ASC
ORDER
时,您无法使用AS
中提供的名称,但可以对同一计算进行排序。
答案 1 :(得分: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