2010-10-27 110 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

相关问题