2016-09-26 61 views
0

有沒有辦法使用PHP排名在PHP

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 

請任何想法,從MySQL排列此行的多個值要如何做到這一點?由於

+0

使用第三個數組與「1st」,「2nd」等...標題,然後使用'array_multisort'標記標題數組沿着score數組。然後,另一個'array_multisort'命令返回「A B C」數組 –

+0

你已經嘗試了什麼? – RST

+0

'arsort($ array,SORT_NUMERIC);'這會將數組值從高到低排序。之後,它是一個循環的簡單問題。 – icecub

回答

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 - 可以組合(按位OR)與SORT_STRING或 SORT_NATURAL排序字符串大小寫不敏感

所以,你可以使用arsort($array1,SORT_NUMERIC);

排序後,您可以循環遍歷這樣的:

$x=1; 
foreach ($array1 as $key => $val) { 
    echo $key.' - '.$x; 
    $x++; 
}