Come spesso accade, mi trovo ad affrontare alcuni problemi durante i miei lavori in php e ne approfitto per condividere con voi le soluzioni.
Oggi vediamo come ordinare un array di date in php.
Solitamente, per ordinare un array numerico o di stringhe, si usa la funzione sort, piuttosto che asort per gli array associativi. Ovviamente, se provassimo a riordinare un array di date — essendo queste delle stringhe — non otterremmo l’ordinamento voluto. Vediamo allora come procedere.
Per prima cosa dovremo assicurarci che le nostre date siano nel formato corretto. Formati accettabili sono, ad esempio:
Sat, 20 Sep 2008 11:26:15 +020020 Sep 200820-9-20082008-09-2020.9.2008
Formati non validi sono, invece: 20 settembre 2008, 20/09/2008… e così via.
Nel caso in cui ci ritrovassimo con un formato scorretto, dovremo splittare la stringa e convertirlo manualmente.
Ora, mettiamo caso di avere un array simile:
"Fri, 19 Sep 2008 13:20:45 +0200",
"Sat, 20 Sep 2008 11:26:15 +0200");
Come prima cosa richiamiamo la funzione strtotime su ogni elemento dell’array. Possiamo farlo automaticamente grazie alla funzione per il mapping:
Ogni data viene così convertita nel suo equivalente valore intero, detto UNIX timestamp.
A questo punto potremo ordinare l’array semplicemente utilizzando le funzioni sort o rsort (nel caso volessimo ordinarlo in ordine decrescente):
L’ultimo passo è riconvertire ogni data nel formato a noi più congeniale, grazie alla funzione date:
$date[$i] = date('d-m-Y', $d);
Semplice, no? Abbiamo così ordinato il nostro array di date.




Mi è stato particolarmente utile, anche se ho dovuto aggiungere alcuni passaggi per adattarlo ai miei scopi. Mille grazie