如何根据特定值按降序对数组进行排序


How to sort array in descending order based on a specific value

我有一个像

这样的新闻数组
Array
(
  [0] => Array
    (
        [news_published] => 1337192831
        [news_category] => 5
    )
  [1] => Array
    (
        [news_published] => 1334566743
        [news_category] => 5
    )
  [2] => Array
    (
        [news_published] => 1340092425
        [news_category] => 6
    )
  [3] => Array
    (
        [news_published] => 1339740173
        [news_category] => 6
    )
  [4] => Array
    (
        [news_published] => 1336148837
        [news_category] => 6
    )
)

如何按降序排序news_published ....我已经尝试过"usort",但不能找到正确的结果,有人能建议我吗?

试试这个:

$arr  = your array;
$sort = array();
foreach($arr as $k=>$v) {
    $sort['news_published'][$k] = $v['news_published'];
}
array_multisort($sort['news_published'], SORT_DESC, $arr);
echo "<pre>";
print_r($arr);
<?php

 $array = array( array('news_published'=>'1337192831','news_category'=>'5'),
            array('news_published'=>'1337192231','news_category'=>'5'),                
            array('news_published'=>'1337192921','news_category'=>'6'),
           );
  / orignal array
 print_r($array);
foreach ($array as $key => $row) {
$new_published[$key] = $row['news_published'];
 }
array_multisort($new_published, SORT_DESC,$array);
 // sorted array
print_r($array);
 ?>

或者

function sortForMe($a, $b)
{
    if ((int)$a['news_published'] === (int)$b['news_published']) {
        return 0;
    }
    return (int)$a['news_published'] < (int)$b['news_published'] ? -1 : 1;
}
usort($array, 'sortForMe');

你可以使用函数或静态方法从类-你的选择:)