php

时间:2016-09-26 22:15:23

标签: php

有没有办法使用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

请知道如何做到这一点?感谢

1 个答案:

答案 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++;
}