Array Sortierungsfrage / Problem

Kahmoon

Erfahrenes Mitglied
Hellau beisammen,

ich bekomme ein XML File zur Verfügung gestellt und lese die enthaltenen Daten aus. Die Daten sind Veranstaltungen bei denen auch ein Feld mit Datum enthalten ist. Bisher lese ich alle Datumsfelder ein und schmeiße doppelte Werte mit array_unique() raus. Soweit alles gut. Das ganze müsste jetzt natürlich vom Datum her absteigend sortiert werden aber arsort() sortiert korrekterweise von der ersten Stelle ab. Das Format der Daten ist z.B. 01.03.2008. Mit bisheriger Sortierung ist der 26.02.2008 somit vor dem 01.03.2008.

Code:
  <event>
    <id>12790</id>
    <datum>01.03.2008</datum>
  </event>
  <event>
    <id>12795</id>
    <datum>26.02.2008</datum>
  </event>

Hab überlegt sämtliche Strings zu zerlegen und umzudrehen....aber ich brauche genau dieses Format dann wieder für weitere Abfragen. :(

Jemand ne Idee?

Gruß
Franky
 
Setz den Key im Array für den Eintrag entsprechend so, dass man danach sortieren kann.
PHP:
$str = '26.02.2008';
var_dump(implode('', array_reverse(explode('.', $str))));
// >> 20080226
 
Oder du schreibst eine eigene Sortierfunktion, die das gegebene Datumsformat korrekt sortiert. Das wäre allerdings umständlicher und ineffizienter.
 
Wenn Du das Array beim Einlesen der Daten so aufbaust, brauchst Du auch keine doppelten Einträge rausschmeissen:
Code:
Array
(
    [20080226] => Array
        (
            [id] => 12795
            [datum] => 26.02.2008
        )

)

Mit ksort auf das Array und fertig ist die Geschichte. ;)
 
Danke Chainy..so in der Art hab ichs gelöst.

PHP:
        foreach($xml->event as $event)
        {
            $datum_formatiert = implode('', array_reverse(explode('.', $event->datum)));
            
            $veranstaltungsdatum [$datum_formatiert] = array( htmlspecialchars ($event->datum));
        }

#Auslesen dann mit
        foreach($veranstaltungsdatum as $value)    
        {
           if($event->datum == $value[0])
           {
            ..
           }
        {
 
Zurück