ordinare array di date

  • Creatore Discussione Creatore Discussione SaHToR
  • Data di inizio Data di inizio
ciao
sei sulla strada giusta, però cerca di pensare al futuro
se hai una data del tipo gg-mm-aa ti conviene intanto che mesi e giorni siano sempre espressi con due caratteri es 03
poi, non so da dove ti provengano le date (da un db?), quindi pensa a come possano essere formattate.
nel db puoi avere bisogno di una data nel formato es 2011-09-29, oppure ti può servire di trasformarla in timestamp o scriverla in italiano 29-09-2011.
ora se scrivi la data 20110929, per adattarla alla chiave dell'array, ti può risultare più complicato in seguito trattarla.
visto che i nomi delle chiavi non possono avere il segno - usa l'underscore es 2011_09_29 in questo modo poi ti è più semplice eventualmente converstilla
es preg_replace("_","-", $data)
eventualmanete esploderla per metterla nel formato italiano
$d=explode("_",$data);
echo "oggi è il $d[2] $d[1] $d[0]";
 
Ho scritto questo semplice script e sembra funzionare:
PHP:
<?php
$foo = array(
    '21-8-2009' => 'foo',
    '22-8-2008' => 'bar',
    '30-9-2011' => 'baz',
);

uksort($foo, function($a, $b) {
    $time_a = strtotime($a);
    $time_b = strtotime($b);

    if ($time_a == $time_b) {
        return 0;
    }

    if ($time_a > $time_b) {
        return 1;
    }

    return -1;
});

print_r($foo);
Restituisce:
Codice:
Array
(
    [22-8-2008] => bar
    [21-8-2009] => foo
    [30-9-2011] => baz
)
 
Questa dovrebbe andare bene con la maggior parte dei formati:
PHP:
$ar_date = array_map('strtotime', $ar_date);
rsort($ar_date);
foreach($ar_date as $i => $data)
{
    $ar_date[$i] = date('d-m-Y', $data);
}
 

Discussioni simili