_Frank_: 2 dim. Array sortieren

Hallo @all,

ich fülle über eine Funktion ein 2 dimensionales Array, mit mehreren Werten.

$this->sub['kat'][$this->i]   = $kategorie;
$this->sub['name'][$this->i]  = $name;
$this->sub['link'][$this->i]  = $link;
$this->sub['ebene'][$this->i] = $ebene;

so, nun möchte ich aber das Array Aufsteigend/Absteigend nach 'kat' sortieren.
Er sortiert das zwar, aber leider zieht er die anderen nicht mit, sprich die bleiben unsortiert und werden anschließend falsch ausgegeben.

Hat jmd eine Lösung für mich, wie ich es verändern muss/soll, dass es so hinhaut, wie ich es möchte?

Wäre für jede Lösung dankbar.

mfg

  1. Hello,

    ich fülle über eine Funktion ein 2 dimensionales Array, mit mehreren Werten.

    $this->sub['kat'][$this->i]   = $kategorie;
    $this->sub['name'][$this->i]  = $name;
    $this->sub['link'][$this->i]  = $link;
    $this->sub['ebene'][$this->i] = $ebene;

    Dies ist ein vierdimensionales Array.
    Es hat die Dimensionen

    - kat
      - name
      - link
      - ebene

    die jedoch als sogenannte verteilte Datensätze harmonisiert sein sollten. das bedeuttet,
    dass zu kat[i] die korresponierenden Elemente name[i], link[i] und ebene[i] gehören,
    oder in PHPisch ausgedrückt: zu sub['kat'][$i] gehören die korresponierenden Elemente sub['name'][$i], sub['link'][$i] und sub['ebene'][$i].

    Wenn Du nun das Teilarray sub['name'] sotieren lässt, kannst Du mittels

    foreach($sub['name'] as $key => $val)
      {
        foreach($sub as $fieldname)
        {
          echo "$fieldname: $sub[$fieldname][$key]<br />";
        }
        echo "<br />";
      }

    Die Ausgabe nach 'name' sortiert durchführen.

    Wenn Du die Dimension 'ebene' sortiert hast, kannst Du statt 'name' natürlich auch 'ebene' einsetzen.

    Wichtig ist nur, dass es in jeder Dimension zu jedem Index ein Element gibt. Sonst Musst Du das eben mit isset() in der Ausgabefunktion abfangen.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hello,

      Hello,

      ich fülle über eine Funktion ein 2 dimensionales Array, mit mehreren Werten.

      $this->sub['kat'][$this->i]   = $kategorie;
      $this->sub['name'][$this->i]  = $name;
      $this->sub['link'][$this->i]  = $link;
      $this->sub['ebene'][$this->i] = $ebene;

      Dies ist ein vierdimensionales Array.

      ist natürlich Quatsch... ;-)

      Es hat in der ersten Dimension die Elemente

      - kat
        - name
        - link
        - ebene

      die jeweils wieder eine weitere Dimension mit den Elementen i_nin bis I_max tragen.
      die jedoch als sogenannte verteilte Datensätze harmonisiert sein sollten. das bedeutet,

      [...]

      PHP-Arrays sind keine Arrays im klassischen Sinne, sondern baumstrukturen. Es ist daher eigentlich nicht ganz richtig von 'Dimensionen' zu sprechen. Jeder Zweig kann nämlich verscheiden tief verschachtelt werden und _andersartig_.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
    2. Hello,

      Wenn Du nun das Teilarray sub['name'] sotieren lässt, kannst Du mittels

      foreach($sub['name'] as $key => $val)
        {
          foreach($sub as $fieldname)
          {

      echo "$fieldname: ".$sub[$fieldname][$key]."<br />";

      }
          echo "<br />";
        }

      So sollte es aber jetzt funktionieren ;-))

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. ok, viele dank

        ich werde es mal testen, ob es so hinhaut :D

        cya

  2. Hallo _Frank_,

    mit array_multisort()

    Gruß,

    Dieter