2010-03-22 68 views
0

我有以下數組,我需要按平均評級降序對它進行重新排序。這是一個片段。任何想法我會如何去做這件事?重新排列多維數組?

感謝

Array 
(
    [0] => Array 
     (
      [id] => 3 
      [name] => 
      [rating] => 0 
     ) 

    [1] => Array 
     (
      [id] => 2 
      [name] => 
      [rating] => 2 
     ) 
) 

回答

3

您可以使用usort()這一點。

usort($arr, 'by_rating'); 

function by_rating($a, $b) { 
    if ($a['rating'] == $b['rating']) { 
    return 0; 
    } else { 
    return $a['rating'] < $b['rating'] ? -1 : 1; 
    } 
} 

或反向:

function by_rating($a, $b) { 
    if ($a['rating'] == $b['rating']) { 
    return 0; 
    } else { 
    return $a['rating'] < $b['rating'] ? 1 : -1; 
    } 
} 
+0

謝謝,我知道一定有這樣的東西漂浮在周圍。 – JasonS 2010-03-22 08:48:03

1

使用PHP的usort()功能。您可以提供您自己的回調函數,該函數被2個輸入調用。你可以開展你在函數喜歡的任何比較和返回值爲準你覺得是最好的等:

function myComparison($val1, $val2) 
{ 
    if ($val1["rating"] == $val2["rating"]) 
    { 
    return 0; 
    } 
    return ($val1["rating"] < $val2["rating"]) ? -1 : 1; 
} 

usort($inputArray, "myComparison"); 

(例如,從PHP的網站,你的結果集以上通過)。