MartinX: Array Sortieren nach [2]-Index

Hallo,

Array
(
    [0] => Array
        (
            [0] => Firma abc
            [1] => 23.02.07 00:00
            [2] => 1172185200
        )

[1] => Array
        (
            [0] => Firma xyz
            [1] => 24.02.07 00:00
            [2] => 1172271600
        )

Dieses Array möchte ich jetzt nach Timestamps sortieren. wie mache ich das?
Hab alle Array Sortier Funktionen ausprobiert und studiert und und und, aber ich hab so das gefühl, dass man nur nach dem [0]-Index sortieren kann!?

Martin

  1. echo $begrüßung;

    Hab alle Array Sortier Funktionen ausprobiert und studiert und und und, aber ich hab so das gefühl, dass man nur nach dem [0]-Index sortieren kann!?

    Richtig. Wenn die Elemente eines Array komplex sind (z.B. ein weiteres Array oder ein Objekt sind), hilft am einfachsten eine Sortierung mit einer selbst definierten Vergleichsfunktion. Diese erkennst du am "u" im Namen.

    Ebenfalls kann array_multisort() helfen, aber das möchte eine andere Struktur als du vorliegen hast.

    echo "$verabschiedung $name";

    1. Wenn die Elemente eines Array komplex sind (z.B. ein weiteres Array oder ein Objekt sind), hilft am einfachsten eine Sortierung mit einer selbst definierten Vergleichsfunktion. Diese erkennst du am "u" im Namen.

      versteh ich nich

      Ebenfalls kann array_multisort() helfen, aber das möchte eine andere Struktur als du vorliegen hast.

      Diese Funktion nehme ich doch schon seit 2 Stunden auseinander und bekomm langsam agressionen!

      Welche Struktur hätte die Funktion denn gerne? vll möchte ich diese Struktur ja nicht...

      Habs jetzt auch mal so probiert

      Array
      (
          [0] => Array
              (
                  [f] => Firma abc
                  [d] => 23.02.07 00:00
                  [t] => 1172185200
              )

      [1] => Array
              (
                  [f] => Firma xyz
                  [d] => 24.02.07 00:00
                  [t] => 1172271600
              )

      aber ich verstehs einfach nicht!

      1. hi,

        Wenn die Elemente eines Array komplex sind (z.B. ein weiteres Array oder ein Objekt sind), hilft am einfachsten eine Sortierung mit einer selbst definierten Vergleichsfunktion. Diese erkennst du am "u" im Namen.
        versteh ich nich

        http://www.php.net/manual/de/function.usort.php

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Hab alle Array Sortier Funktionen ausprobiert und studiert und und und, aber ich hab so das gefühl, dass man nur nach dem [0]-Index sortieren kann!?

        Wann immer ich dieses Problem hatte habe ich diese Voraussetzung einfach erfüllt. In den meisten Fällen ist das kein Problem.
        Soll heißen speichere den Timestamp doch einfach in [0] und die Firma in [2], ich wüsste keine Situation, in der das ein _wirkliches_ Problem wäre.
        Es ist imho eine sehr einfache Lösung.

        include (gruss.php);

      3. echo $begrüßung;

        Ebenfalls kann array_multisort() helfen, aber das möchte eine andere Struktur als du vorliegen hast.
        Diese Funktion nehme ich doch schon seit 2 Stunden auseinander und bekomm langsam agressionen!

        Welche Struktur hätte die Funktion denn gerne? vll möchte ich diese Struktur ja nicht...

        Vermutlich möchtest du sie nicht, denn sie ist ungewöhnlich, hat aber auch Vorteile.

        Array
        (
            [0] => Array
                (
                    [f] => Firma abc
                    [d] => 23.02.07 00:00
                    [t] => 1172185200
                )

        [1] => Array
                (
                    [f] => Firma xyz
                    [d] => 24.02.07 00:00
                    [t] => 1172271600
                )

        Das ist ein sogenanntes Zeilenarray (array of rows). Diese Struktur bekommt man beispielsweise aus Datenbankabfragen. Jedes Element des Arrays stellt einen Datensatz dar.
        array_multisort() arbeitet nur mit Spaltenarrays (array of columns). Jedes Element stellt eine Spalte dar (alle Firmennamen, alle Daten, alle Timestamps). Der Datensatz n setzt sich aus allen n-ten Werten dieser Spalten zusammen. Das Beispiel "Sorting database results" behandelt diese Thematik.

        Es wäre vermutlich für dich einfacher, wenn du usort() (oder uksort() oder uasort()) plus eine selbst geschriebene Vergleichsfunktion verwendest.

        echo "$verabschiedung $name";