开发者

Sorting an Array by Values in PHP [duplicate]

This question already has answers here: Closed 11 years ago.

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'];
});
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜