Sorting an Array by Values in PHP [duplicate]
Possible Dupli开发者_StackOverflow社区cate:
Sorting an associative array in PHP
I have an array that looks like the below one. I need to order it by the points values Highest to lowest. I have tried all the sorting functions and some bring back crazy results.
(
[0] => Array
(
[name] => Shane Jones
[points] => 43
)
[1] => Array
(
[name] => Katie 'Kitty' Youd
[points] => 50
)
[2] => Array
(
[name] => Steve Bennett
[points] => 50
)
[3] => Array
(
[name] => Sharon Harvey
[points] => 99
)
[4] => Array
(
[name] => Sean Dentith
[points] => 50
)
)
See Example #3 in the PHP Manual entry for array_multisort
<?php
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
// Obtain a list of columns
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
// Sort the data with volume descending, edition ascending
// Add $data as the last parameter, to sort by the common key
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>
Use usort()
.
usort($data, function($a, $b) {
return $a['points'] - $b['points'];
});
精彩评论