您好我必须在desc中对此数组进行排序。使用php在ratingVal的基础上订购。我怎么能这样做。
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 :(得分:3)
使用usort
:
function sortIt( $a, $b ){
return $b['ratingVal'] - $a['ratingVal'];
}
usort( $yourArray, "sortIt" );
对于升序,请在减法中更换$a
和$b
。
usort
功能允许您创建自己的自定义排序功能
答案 1 :(得分:1)
如果从mysql数据库中检索此数据(如我所见,指定了mysql标记),则可以在查询中使用ORDER BY语句。
如果这不合适,您必须实施比较功能并使用usort()功能。
答案 2 :(得分: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;
} );
这使用了usort
和anonymous functions,这是PHP 5.3中的新增内容。