Klaus-Jürgen: Mehrdimensionale Arrays sortieren

Guten Abend,
ich habe folgendes Problem:
Ich habe mir für die Benutzerverwaltung ein mehrdimensionales Arrays angelegt:
1. Array ist $kontakt mit Schlüssel 0,1,2,3,4,5...
2. Array ist $kontakt[$i] mit Schlüssel Name, Vorname, Telephon...

Nun möchte ich das gesamte mehrdimensionale Array z.B. nach Vorname sortieren. Ich habe einfach keine Ahnung wie ich das bewerkstelligen soll?

------

Und noch ein kleines anderes Problem: Angenommen ich habe eine Variable $a mit dem Wert "zeichenkette" und ich habe eine Variable $zeichenkette. Nun möchte ich anhand von $a auf $zeichenkette zugreifen. Denn $a kann noch andere Werte wie "zeichen2", "kette"... annehmen und ich habe noch andere Variablen wie $zeichen2, $kette...
Je nachdem, was $a ist, soll eine Variable aufgerufen werden. Also eine Verkürzung von:
if ($a=="zeichenkette") { $var = $zeichenkette; }
elseif ($a=="zeichen2") { $var = $zeichen2; }
elseif ($a=="kette") { $var = $kette; }

Hoffe ihr könnt mir helfen.

MfG

Klaus-Jürgen

  1. Moin!

    1. Array ist $kontakt mit Schlüssel 0,1,2,3,4,5...
    2. Array ist $kontakt[$i] mit Schlüssel Name, Vorname, Telephon...

    Nun möchte ich das gesamte mehrdimensionale Array z.B. nach Vorname sortieren. Ich habe einfach keine Ahnung wie ich das bewerkstelligen soll?

    Du mußt dir eine benutzerdefinierte Sortierfunktion basteln. Genauer: Du benutzt die PHP-Sortierfunktion usort() (wahlweise kannst du auch mal gucken, ob uasort() oder uksort() besser geeignet sind) und definierst eine Vergleichsfunktion, um damit festzustellen, welches Arrayelement von zweien "kleiner" ist und damit weiter nach vorne gehört in deiner Sortierung.

    Die Beispiele in http://www.php.net/manual/en/function.usort.php sollten eigentlich als Hilfestellung ausreichen.

    Und noch ein kleines anderes Problem: Angenommen ich habe eine Variable $a mit dem Wert "zeichenkette" und ich habe eine Variable $zeichenkette. Nun möchte ich anhand von $a auf $zeichenkette zugreifen. Denn $a kann noch andere Werte wie "zeichen2", "kette"... annehmen und ich habe noch andere Variablen wie $zeichen2, $kette...

    Wenn in $a der Variablenname der Variablen drinsteht, dann kannst du mit ${$a} auf diese Variable zugreifen.

    Siehe auch http://www.php.net/manual/en/language.variables.variable.php, wobei ich das dort angeführte Beispiel nicht unbedingt für gut halte.

    - Sven Rautenberg

    --
    "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
    1. Du mußt dir eine benutzerdefinierte Sortierfunktion basteln. Genauer: Du benutzt die PHP-Sortierfunktion usort() (wahlweise kannst du auch mal gucken, ob uasort() oder uksort() besser geeignet sind) und definierst eine Vergleichsfunktion, um damit festzustellen, welches Arrayelement von zweien "kleiner" ist und damit weiter nach vorne gehört in deiner Sortierung.

      Aber ich weiß erst gar nicht, wie ich an z.B. "Name" herankommen soll. Ich muss ja immer bei so einer Vergleichsfunktion ein Array angeben, aber welches?

      Wenn in $a der Variablenname der Variablen drinsteht, dann kannst du mit ${$a} auf diese Variable zugreifen.

      Danke, klappt! Und was ist der Vorteil von ${$a} gegenüber $$a?

      Klaus-Jürgen

      1. Moin!

        Aber ich weiß erst gar nicht, wie ich an z.B. "Name" herankommen soll. Ich muss ja immer bei so einer Vergleichsfunktion ein Array angeben, aber welches?

        Du willst das ganze Array sortieren. Die einzelnen Elemente sind wiederum Arrays. Die Vergleichsfunktion muß diese Arrays miteinander vergleichen. Da das nicht direkt geht, mußt du auf ein oder mehrere Unterelemente dieses Arrays zugreifen, um den Vergleich durchzuführen.

        Beispiel 2 sollte dir demonstrieren, wie es geht.

        Wenn in $a der Variablenname der Variablen drinsteht, dann kannst du mit ${$a} auf diese Variable zugreifen.

        Danke, klappt! Und was ist der Vorteil von ${$a} gegenüber $$a?

        Der Vorteil dürfte sein, dass es funktioniert. Denn sonst würde wohl $$a in der Anleitung drinstehen, oder?

        - Sven Rautenberg

        --
        "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
  2. Hallo!

    Du solltest Dir vielleicht auch mal die Funktion array-multisort ansehen: http://php.net/array-multisort

    Grüße
    Andreas