2014-01-18 112 views
1

我有一個php數組,其中有兩個鍵我在排序時必須考慮,如果兩個用戶的數量相同,則考慮另一個鍵值。使用兩個鍵排序數組,如果一個鍵的兩個值相同,則使用另一個鍵?

Ex。 Table structure for example

$result = $client->getTopUsers(); 
for($i = 0; $i < count($result); $i++) 
{ 

    if($result[$i]['count'] == $result[$i + 1]['count']) 
    { 
     if($result[$i + 1]['liked'] > $result[$i]['liked']) 
     { 
      $result[$i + 1]['rank'] = $i-2; 
      $result[$i]['rank'] = $i + 1; 
     } else 
     { 
      $result[$i]['rank'] = $i; 
     } 
    } else 
    { 
     $result[$i]['rank'] = $i; 
    } 
    $result[$i]['rank']; 
} 

在上面的圖片中,最後2項的數量是相同的,所以我想我根據排名liked_count.This是我到目前爲止已經試過,但我沒有得到的結果(「等級」)作爲預期。

回答

1

使用ORDER BY在查詢,沒有必要在PHP代碼中的數據進行排序,參見下面的例子

SELECT * 
FROM users u 
ORDER BY u.count DESC, u.liked_count DESC 

它給了我這樣的事情,Result

+0

請檢查編輯內容,我也想按照順序排列。 – Rayon

+0

@RayonDabre你是否贊成計算ASC或DESC? –

+0

獲得更多喜歡的人將會處於更高層次。 – Rayon

0

可能是這樣可以解決您的問題

select rownum as rnk,field_1,field_2 from (select * from table_name order by key_field1,key_field2 desc limit 10) order by rownum ; 
0
select * 
from veer_user_details 
order by count desc, liked_count desc; 

這個查詢WO爲我而去。

相關問題