对数组中的值进行排名

时间:2013-09-04 12:36:16

标签: php arrays

我在while循环中运行它以在每次通过它时添加到数组。但是,我的问题是我正在尝试为每个值分配排名。看到horse1AP=51EP=47SP= 32FX=20Horse2AP=52EP = 55SP=30F=19。我试图让它像这样在屏幕上打印:

          AP   EP   SP   FX  
Horse 1   2    2    1    1

Horse 2   1    1    2    2

等等,但是有很多匹马。

这是我的代码。我不太熟悉PHP,但我认为这是要走的路。

$allstats[]= array
(
"AP"=>"x".$AP,
"EP"=>"x".$EP,
"SP"=>"x".$SP,
"FX"=>"x".$FX,
"Horse"=>$horse,
);

$APranks[$AP];
$EPranks[$EP];
$SPranks[$SP];
$FXranks[$FX];

ksort($APranks,2);
ksort($EPranks,2);
ksort($SPranks,2);
ksort($FXranks,2);
$FinalAP=(array_keys($APRanks,$AP));
?>
<div id="Rankings">
<? echo array_search($AP,$FinalAP);?><? echo array_search($EP,$EPranks);?><? echo         array_search($SP,$SPranks);?><? echo array_search($FX,$FXranks);?>
</div>

1 个答案:

答案 0 :(得分:0)

假设你的马阵列是这样的,

$horses[1]=array('AP'=>51,'EP'=>47,'SP'=>32,'FX'=>20);
$horses[2]=array('AP'=>52,'EP'=>55,'SP'=>30,'FX'=>19);

$horse_values = array('AP','EP','SP','FX');
$horse_rank = array();

foreach($horse_values as $k=>$val)
{
    uasort($horses, create_function('$a, $b', 'return custom_sort($a, $b, "'.$val.'");'));

    $i=1;
    foreach($horses as $l=>$horse)
    {
        $horse_rank[$l][$val] = $i;
        $i++;
    }
}

function custom_sort( $a, $b, $meta )  {
    if ( $a[$meta] == $b[$meta] )
        return 0;
    else if ( $a[$meta] > $b[$meta] )
        return -1;
    else
        return 1;
    //echo "$a, $b, $meta<hr>"; // Debugging output
}

arsort($horse_rank); //sorting the final rank array based on horse number
print_r($horse_rank);

输出:

Array
(
    [1] => Array
        (
            [AP] => 2
            [EP] => 2
            [SP] => 1
            [FX] => 1
        )
    [2] => Array
        (
            [AP] => 1
            [EP] => 1
            [SP] => 2
            [FX] => 2
        )
)