Ankündigung

Einklappen
Keine Ankündigung bisher.

Arrays sortieren, Bezeichnung, Preis

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Arrays sortieren, Bezeichnung, Preis

    Hey Leute,

    habe ein kleines Problem mit der Sortierung von Arrays. Bin eigentlich kein Anfänger, aber da ich seit gestern morgen schon 24 stunden vor dem 20 000 Zeilen Code verbracht habe, hüllt sich mein Denkvermögen in Schweigen über diese Angelegenheit.

    Es handelt sich um mehrere multidimensionale Arrays der Form:
    PHP-Code:
       
    Array ( [bezeichnung] => 26.11.2006 1860 München Koblenz Allianz Arena [artikelnr] => 28 [preis] => 23 [mwst] => [beschreibung] => [bild] => [detailbeschreibung] => Termin wird bekannt gegeben Sitz Block 239 [detailbild] => [templatefile_smalllist] => Array([........])); 
    PHP-Code:
    Array ( [bezeichnung] => 12.11.2006 1860 München Paderborn Allianz Arena [artikelnr] => 25 [preis] => 28 [mwst] => [beschreibung] => [bild] => [detailbeschreibung] => Termin wird bekannt gegeben Sitz Block 235 [detailbild] => [templatefile_smalllist] => Array([........])) 
    Hat jemand eine Idee, wie ich diese Arrays der Bezeichnung und als zweites Kriterium des Preises ordnen kann? Also in diesem Fall müsste ja das zweite Array vor das erste, und das Datum müsste auch richtig erkannt werden, nicht dass der 12.09.2006 nach dem 01.02.2007 kommt.

    Mit freundlichen Grüßen und vielen sich im Tiefschlaf befindlichen grauen Zellen,
    Peter

  • #2
    Wenn du zuerst nach dem Datum sortieren willst ist der Aufbau des Arrays nicht sehr gut.
    Du solltest zuerst für das Datum ein eigenes Element definieren und es dann im passenden Format YYYYMMDD oder als Timestamp abspeichern. Dann gibt es auch kein Problem nach dem Datum zu sortieren.

    Wenn das erledigt ist, sollte die restliche Sortierung des Arrays kein Problem sein, hier helfen dir die Funktionen usort oder array_multisort weiter.

    Kommentar


    • #3
      Hallo webbi,

      Danke für Deine Antwort.
      Daran dachte ich auch schon, aber der Shop (den ich nicht programmiert habe) ist sehr komplex. Der arrayaufbau ist essentiell, weil der array noch durch eine Hand voll handler gespült wird, die diesen Aufbau erwarten.
      Hatte schon daran gedacht, das datum herauszuziehen, einen timestamp daraus zu machen und dann zu ordnen. aber wie bekomme ich die daten dann wieder dahinter? Das wäre eine riesen action.

      Hat vielleicht jemand noch einen Einfall dazu?

      Kommentar


      • #4
        Zieh das Datum doch einfach raus und erstelle ein neues array-element. Da die anderen Handler dieses nicht erwarten, werden sie darauf auch nicht zugreifen. Sollte es doch ein Problem geben, kannst du es ja nach Sortierung wieder entfernen

        - Datum rausziehen, eigentliche Bezeichnung rausziehen
        - Neues Element mit Datum (als timestamp oder YYYYMMDD) und neues Element mit eigentlicher Bezeichnung
        - Sortieren nach a) Datum b) Bezeichnung c) Preis
        - Neue Elemente bei Bedarf entfernen.

        Kommentar


        • #5
          Per preg_match o. dergl. ein weiteres (indizierendes) Array erstellen, mit einem Schlüssel wie YYYYMMDD_Preis, dabei Preis vielleicht via sprintf auf x Stellen vor dem Komma mit Null auffüllen. In den Value kommt der Index des Ursprungsarrays, ksort() und mit foreach auslesen... ?

          Kommentar

          Lädt...
          X