The array is incorrectly sorted by date. If the data is selected from 2014-06-01 to 2015-02-15, it sorts only by month, from January to December (2015 goes ahead, then 2014).

I used several functions - the same thing.

function sort1($a, $b){ if (strtotime($a['DATE']) > strtotime($b['DATE'])) return 1; } function sort3($a, $b){ if (strtotime($a['DATE']) === strtotime($b['DATE'])) return 0; return (strtotime($a['DATE']) > strtotime($b['DATE']))?1:-1; } function sort2($a, $b){ $aa = explode("-", $a['DATE']); $ba = explode("-", $b['DATE']); if($aa[2]>$ba[2])return 1; if($aa[2]<$ba[2])return -1; if($aa[1]>$ba[1])return 1; if($aa[1]<$ba[1])return -1; if($aa[0]>$ba[0])return 1; if($aa[0]<$ba[0])return -1; return 0; } $rows_array[0]['DATE']= "2015-01-01"; $rows_array[0]['NAME']= "Vasya"; $rows_array[1]['DATE']= "2014-01-01"; $rows_array[2]['NAME']= "Kolya"; // итд usort($rows_array, 'sort3'); 
  • @Freqnsy; If you are given an exhaustive answer, mark it as correct (click on the check mark next to the selected answer). - Vitalina

1 answer 1

Yes, that's enough

 <?php $a = array( array('DATE' => '2014-02-15', 'NAME' => 'Петя'), array('DATE' => '2013-01-05', 'NAME' => 'Петя'), array('DATE' => '2015-05-01', 'NAME' => 'Вася'), array('DATE' => '2014-02-10', 'NAME' => 'Коля'), array('DATE' => '2012-01-25', 'NAME' => 'Ира'), ); function mysort($a, $b) { return strtotime($b['DATE']) - strtotime($a['DATE']); } usort($a, 'mysort'); echo '<pre>'; print_r($a); 

And at the output we get

 Array ( [0] => Array ( [DATE] => 2015-05-01 [NAME] => Вася ) [1] => Array ( [DATE] => 2014-02-15 [NAME] => Петя ) [2] => Array ( [DATE] => 2014-02-10 [NAME] => Коля ) [3] => Array ( [DATE] => 2013-01-05 [NAME] => Петя ) [4] => Array ( [DATE] => 2012-01-25 [NAME] => Ира ) )