2012-03-26 94 views
1

我有這樣在PHP中排序數組?

[{"id"="1","rating"=>[{"rating"=>"1"}]},{"id"="2","rating"=>[{"rating"=>"2"}]},{"id"=>"3","rating"=>[{"rating"=>"3"}]}]

這裏的數組,我需要那種基於密鑰的「評級」我需要期待輸出

[{"id"="3","rating"=>[{"rating"=>"3"}]},{"id"="2","rating"=>[{"rating"=>"2"}]},{"id"=>"1","rating"=>[{"rating"=>"1"}]}] 

任何一個可以請指導我如何能得到這個

感謝您的提前。

+2

只是看看說明書,具體爲:http://nl3.php.net/manual/en/function.uasort.php – Nanne 2012-03-26 07:08:09

+1

此外,所有的'='標誌數組中應該是' =>'標誌。 – Stefan 2012-03-26 07:15:52

回答

0

yuo可以使用php函數usort。

你應該提供你的功能來實現你的排序critiria。例如

function your_sort($a, $b) 
{ 
    return $b['rating'] - $a['rating']; 
} 

your_sort($array, "cmp"); 
2

,如果你想保持鍵:

uasort($data, function($a, $b){ return ($a->rating > $b->rating); }); 

,如果你不

usort($data, function($a, $b){ return ($a->rating > $b->rating); }); 
2
function aasort (&$array, $key) { 
    $sorter=array(); 
    $ret=array(); 
    reset($array); 
    foreach ($array as $ii => $va) { 
     $sorter[$ii]=$va[$key]; 
    } 
    asort($sorter); 
    foreach ($sorter as $ii => $va) { 
     $ret[$ii]=$array[$ii]; 
    } 
    $array=$ret; 
} 

aasort($your_array,"rating"); 

來源:Sort Multi-dimensional Array by Value

0

小心的項的數組似乎是對象,並且「評級」親perty是一個可能被轉換爲數字的字符串。

function f_my_sort($a, $b) { 
    if ($a->id==$b->id) return 0; 
    return (intval($a->rating) < intval($b->rating)) ? -1 : 1; 
} 

usort($my_array, "f_my_sort");