2 dim. Array sortieren
_Frank_
- php
0 Tom0 Dieter Raber
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
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
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
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
ok, viele dank
ich werde es mal testen, ob es so hinhaut :D
cya