Reputation: 2129
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
)
)
Upvotes: 0
Views: 2472
Reputation: 22438
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
Upvotes: 3
Reputation: 237865
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.
Upvotes: 1