有没有办法使用php
对来自mysql的多行值进行排名row1- (A,B,C) | (100,200,39)
row2- (A,B,C) | (467,29,89)
并希望结果看起来像这样
row1
rank
A - 2nd
B - 1st
C - 3rd
row2
rank
A - 1st
B - 3rd
C - 2nd
请知道如何做到这一点?感谢
答案 0 :(得分:0)
假设mysql的数组如下所示:
$array1=array('A'=>100, 'B'=>200, 'C'=>39);
$array2=array('A'=>467, 'B'=>29, 'C'=>89);
使用arsort:
arsort($array1);
arsort($array2);
第二个参数是: sort_flags
使用这些types:
SORT_REGULAR - 正常比较项目(不要更改类型)
SORT_NUMERIC - 以数字方式比较项目
SORT_STRING - 将项目比较为字符串
SORT_LOCALE_STRING - 根据当前值将项目比较为字符串 语言环境。它使用区域设置,可以使用setlocale()
进行更改SORT_NATURAL - 使用“自然排序”比较项目作为字符串 natsort()
SORT_FLAG_CASE - 可以与SORT_STRING组合(按位或) SORT_NATURAL以不区分大小写的方式对字符串进行排序
所以你可以使用arsort($array1,SORT_NUMERIC);
对它进行排序后,你可以像这样循环:
$x=1;
foreach ($array1 as $key => $val) {
echo $key.' - '.$x;
$x++;
}