Как отсортировать массив в порядке убывания на основе определенного значения

У меня есть множество новостей вроде:

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'); 

вы можете использовать функцию или статический метод из класса – ваш выбор 🙂