Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie dat w tablicy
Forum PHP.pl > Forum > PHP
RollDev
Witam, od kilku godzin męczę się z pewnym problem.
Mianowicie potrzebuję posortować daty w tablicy.
Moja tablica:
  1. $arr = array('2013-02-01','2000-02-01','2016-02-17','0000-00-00','0000-00-00','0000-00-00');

Chcę ja posortować, tak aby na początku wyświetlały mi się daty od najstarszego, a daty, gdzie jest '0000-00-00' na końcu.
Potrzebuję jakiegoś sprytnego rozwiązania, gdzie będzie to szybko się wykonywało.
Próbowałem usort z własną funkcją callback, lecz to nie pomogło, gdyż daty '0000-00-00' wpychały się przed najstarsze daty.
Ma ktoś jakiś pomysł na to rozwiązanie?
Chciałbym aby mój output wyglądał tak:
  1. [0] => '2000-02-01',
  2. [1] => '2013-02-01',
  3. [2] => '2016-02-01',
  4. [3] => '0000-00-00',
  5. [4] => '0000-00-00',
  6. [5] => '0000-00-00',
  7. )
redeemer
  1.  
  2. $arr = array('2013-02-01','2000-02-01','2016-02-17','0000-00-00','0000-00-00','0000-00-00');
  3.  
  4. usort($arr, function ($a, $b) {
  5. $at = strtotime($a);
  6. $bt = strtotime($b);
  7.  
  8. if ($a == '0000-00-00')
  9. return 1;
  10.  
  11. if ($b == '0000-00-00')
  12. return -1;
  13.  
  14. if ($at == $bt)
  15. return 0;
  16.  
  17. return ($at < $bt) ? -1 : 1;
  18. });
  19.  
  20. var_dump($arr);
  21.  
RollDev
Dzięki mistrzu! Zajeło mi to dłuższa chwile i zabrakło pomysłów smile.gif ale przyszedłeś z rozwiązaniem smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.