Sahra: Mehrdimensionale Arrays

Hallo meine lieben Forenleser und Helfer,

ich habe da mal eine kleine Frage, weil alle Antworten im Netz mich verwirren. Ich würde gerne ein Array füllen.

$temp = array();

for(..){
   array_push($temp,"name","vorname");
}

So geht das natürlich nicht. Aber ich möchte dann nachher nachdem Vor- oder Nachnamen sortieren können.

Kann mir jemand sagen, wie das geht?

Bis dann
Sahra

  1. Hallo Freunde des gehobenen Forumsgenusses,

    So geht das natürlich nicht. Aber ich möchte dann nachher nachdem Vor- oder Nachnamen sortieren können.

    Da gibt es zwei Möglichkeiten:

    1. ein Assoziatives Array

      
    $temp = array();  
    $temp[$vorname] = $nachname;  
    // oder $temp[$nachname] = $vorname;  
    
    

    Vorteile:
    Einfache Sortierung mit den PHP-Sortierfunktionen.

    Nachteile:
    Es kann zu jedem Vornamen (Nachnamen) nur einen Nachnamen (Vornamen) geben.

    2. Ein 2-Dimensionales Array

      
    $temp = array();  
    $temp[] = array($vorname, $nachname);  
    // eindeutiger: $temp[] = array('vorname' => $vorname, 'nachname' => $nachname);  
    
    

    Vorteile:
    Es kann beliebig viele "Max Mustermann" geben

    Nachteile:
    K.a., wie man das sortiert, das geht aber garantiert irgendwie.

    Gruß
    Alexander Brock

    --
    Ceterum censeo Carthaginem esse delendam
    1. Hi,

      na das ist ja hilfreich. Das sortieren ist schon wichtig. Mal sehen ob das hier noch jemand weiß, vielleicht finde ich ja auch was...

      Danke erstmal..

      1. Und die Ausgabe,

        ist glaube ich auch anders, oder?

        Bis dann
        Sahra

        1. http://de3.php.net/manual/en/function.usort.php

          Schau dir auch mal die Userkommentare an.

    2. echo $begrüßung;

      1. Ein 2-Dimensionales Array
        K.a., wie man das sortiert, das geht aber garantiert irgendwie.

      Ja, z.B. mit einer selbst geschriebenen Vergleichsfunktion und usort() oder uasort().

      echo "$verabschiedung $name";

  2. Moin!

    $temp = array();

    for(..){
       array_push($temp,"name","vorname");
    }

    $arPersonen=array();
    legt ein Array an.

    for ($i....) {
      #  i von 0 bis ... ???
      $arPersonen[$i]=array();
      # Das Array-Element wird selbst zum Array
      $arPersonen[$i]['nname']='Max';
      $arPersonen[$i]['vname']='Mustermann';

    }

    Zum Sortieren ein Hilfsarray 'bauen':

    $strSchluessel='vname'; #Wonach soll sortiert werden?

    for ($i....) {
     # siehe oben, muss den gleichen Gang nehmen
      $arTemp['$i']= $arPersonen[$i][$strSchluessel];
    }

    Hilfsarray sortieren

    asort --  Sortiert ein Array und behält die Indexverbindungen

    asort($arTemp);

    Das Array $arTemp ist jetzt sortiert

    while (list ($key) = each ($arTemp)) {
       # numerischer $key:
       $key=(int)$key;
       # Kein weiterer Umweg Ausgabe des ursprünglichen Arrays:
       echo $arPersonen[($key)]['nname'].', '.$arPersonen[($key)]['vname']."<br>\n";
    }

    --- ungetestet, kann Fehler enthalten ---

    Gegenfrage: Wo kommen denn die Daten des Arrays her?
    Datenbank: nutze deren Funktionen
    File: unix hat den netten, schnellen und mächtigen Befehl 'sort'. Eventuell solltest Du den benutzen.

    Beispieldatei:

    Max;Mustermann
    Hans;Meier
    Hein;Stein

    Das Einlesen der Datei geht dann so: $strDateiInhalt=system("sort -t; -k2 $file")
    Einlesen des nach nach Spalte 1, dann Spalte 2 sortierten Datei, Spaltentrenner ist ';' (Das Semikolon muss für die Shell maskiert werden.)

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development