如何使用PHP对多维数组进行排序?

时间:2010-10-27 10:30:51

标签: php sorting multidimensional-array

您好我必须在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
        )

)

3 个答案:

答案 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;
} );

这使用了usortanonymous functions,这是PHP 5.3中的新增内容。