2010-10-27 158 views
0

嗨我必須在desc中排序這個數組。以ratingVal爲基礎使用php命令。我怎樣才能做到這一點。如何使用php對多維數組進行排序?

Array 
(
    [0] => Array 
     (
      [rating_postid] => 26 
      [raCnt] => 6 
      [sRate] => 18 
      [ratingVal] => 3 
     ) 

    [1] => Array 
     (
      [rating_postid] => 714 
      [raCnt] => 3 
      [sRate] => 14 
      [ratingVal] => 4.6666666666667 
     ) 

    [2] => Array 
     (
      [rating_postid] => 14 
      [raCnt] => 4 
      [sRate] => 12 
      [ratingVal] => 3 
     ) 

    [3] => Array 
     (
      [rating_postid] => 290 
      [raCnt] => 2 
      [sRate] => 10 
      [ratingVal] => 5 
     ) 

    [4] => Array 
     (
      [rating_postid] => 194 
      [raCnt] => 2 
      [sRate] => 8 
      [ratingVal] => 4 
     ) 

    [5] => Array 
     (
      [rating_postid] => 134 
      [raCnt] => 2 
      [sRate] => 6 
      [ratingVal] => 3 
     ) 

    [6] => Array 
     (
      [rating_postid] => 707 
      [raCnt] => 1 
      [sRate] => 5 
      [ratingVal] => 5 
     ) 

) 
+0

我重申了您的問題以使用更合適的標籤, G。如果你真的使用5.2.X,不要使用PHP 5.3標籤。 – Max 2010-10-27 10:56:10

回答

3

使用usort

function sortIt($a, $b){ 
    return $b['ratingVal'] - $a['ratingVal']; 
} 

usort($yourArray, "sortIt"); 

按升序排列,換在減法$a$b

usort功能允許您如果檢索從MySQL數據庫此數據創建自己的自定義排序函數

+0

謝謝先生:) – learner 2010-10-27 11:31:39

+0

+1(a)因爲你的代碼是這樣做的方式,(b)因爲我偷了我的答案! – lonesomeday 2010-10-27 11:45:11

+1

任何你沒有使用函數sortIt($ a,$ b){return $ b ['ratingVal'] - $ a ['ratingVal'];}'? – outis 2010-10-27 13:15:19

1

(如我看到的,是指定mysql的標籤),您可以在查詢中使用ORDER BY語句。

如果這不合適,您必須實現比較功能並使用usort()函數。

1

你已經標記了你的代碼「php5.3」,所以我打算給出5.3特定的答案。

適應Harmen代碼:

usort($yourArray, function($a, $b) { 
    if($a['ratingVal'] == $b['ratingVal']) 
     return 0; 
    return ($a['ratingVal'] < $b['ratingVal']) ? 1 : -1; 
}); 

這使用usortanonymous functions,新增加了在PHP 5.3。

+0

對不起,先生我正在使用PHP 5.2.6 – learner 2010-10-27 10:50:40

相關問題