2012-03-26 86 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");