0

Hi I have to sort this array in desc. order on the basis of ratingVal using php. How can I do that.

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
        )

)
1
  • I retagged your question to use more appropriate tags, e. g. dont use the PHP 5.3 tag if you actually do use 5.2.X. Commented Oct 27, 2010 at 10:56

3 Answers 3

3

Use usort:

function sortIt( $a, $b ){
    return $b['ratingVal'] - $a['ratingVal'];
}

usort( $yourArray, "sortIt" );

For ascending order, swap the $a and $b in the subtraction.

The usort function allows you to create your own custom sort function

Sign up to request clarification or add additional context in comments.

2 Comments

+1 (a) because your code is the way to do this and (b) because I stole it for my answer!
Any reason you didn't use function sortIt($a, $b) {return $b['ratingVal']-$a['ratingVal'];} ?
1

If you retrieve this data from mysql database (as I see, mysql tag is specified), you may use ORDER BY statement in your query.

If this is not suitable, you'll have to implement comparison function and use usort() function.

Comments

1

You've tagged your code "php5.3", so I'm going to give a 5.3-specific answer.

Adapting Harmen's code:

usort( $yourArray, function($a, $b) {
    if( $a['ratingVal'] == $b['ratingVal'] )
        return 0;
    return ( $a['ratingVal'] < $b['ratingVal'] ) ? 1 : -1;
} );

This uses usort and anonymous functions, a new addition in PHP 5.3.

1 Comment

sorry sir I am using php 5.2.6

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.