嗨,我必须在desc中对这个数组进行排序。在ratingVal的基础上使用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
)
)发布于 2010-10-27 18:35:10
使用usort
function sortIt( $a, $b ){
return $b['ratingVal'] - $a['ratingVal'];
}
usort( $yourArray, "sortIt" );对于升序,在减法中交换$a和$b。
usort函数允许您创建自己的自定义排序函数
发布于 2010-10-27 18:37:17
如果您从mysql数据库检索此数据(如我所见,指定了mysql标记),则可以在查询中使用ORDER BY语句。
如果这不合适,你将不得不实现比较函数并使用usort()函数。
发布于 2010-10-27 18:43:51
您已经将代码标记为"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,这是PHP5.3中的一个新功能。
https://stackoverflow.com/questions/4032240
复制相似问题