Mehrdimensionale Arrays
Sahra
- php
0 Alexander Brock0 fastix®
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
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
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..
Und die Ausgabe,
ist glaube ich auch anders, oder?
Bis dann
Sahra
http://de3.php.net/manual/en/function.usort.php
Schau dir auch mal die Userkommentare an.
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';
}
$strSchluessel='vname'; #Wonach soll sortiert werden?
for ($i....) {
# siehe oben, muss den gleichen Gang nehmen
$arTemp['$i']= $arPersonen[$i][$strSchluessel];
}
asort($arTemp);
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®