Сортировка PHP по дате

Я пытался использовать usort, но у меня проблемы

Теперь я использовал функцию usort.

мой массив имеет строковый ключ и строковое значение, которое представляет дату

мой результат выглядит следующим образом:

02/09/2013 03/09/2013 03/10/2013 04/07/2013 04/09/2013 09/09/2013 11/09/2013 13/06/2013 13/08/2013 

Это только сортировка по первым двум числам, я хочу, чтобы они сортировались для полной даты, что я делаю неправильно?

Это мой код:

 usort($filesWithDates,"my_sort"); foreach ($filesWithDates as &$value) { echo $value."<br/>"; } function my_sort($a,$b) { if ($a==$b) return 0; return ($a<$b)?-1:1; } foreach ($filesWithDates as &$value) { echo $value."<br/>"; } 

Это не даты. Это строки . Вам нужно указать даты в правильном формате, который можно сортировать как строки или сравнивать с датами с помощью DateTime() :

 usort($filesWithDates, function($a, $b) { $date1 = DateTime::createFromFormat('d/m/Y', $a); $date2 = DateTime::createFromFormat('d/m/Y', $b); return $date1 > $date2; }); foreach ($filesWithDates as $value) { echo $value."<br/>"; } 

Сначала конвертируйте даты в целые числа:

 $datesAsInts = array(); foreach($filesWithDats as $value) { $datesAsInts[] = strtotime($value); } usort($datesAsInts,"my_sort"); foreach ($datesAsInts as $value) { echo date('d/m/Y', $value)."<br/>"; } function my_sort($a,$b) { if ($a==$b) return 0; return ($a<$b)?-1:1; }