Mailinglisten-Archive |
On Sun, Oct 28, 2001 at 09:21:41AM +0100, Thomas Beckmann wrote: > >ich mache gerade meine ersten Gehversuche mit PHP(4). Ich habe eine > >Textdatei, in der in jeder Zeile ein Adresse, durch ";" getrennte > >Felder, steht. Ich lese die Datei mit "file" in Array ein. > Vielleicht solltest Du Dir mal fgetcsv() anschauen, das scheint hier > sinnvoller Wie das funktioniert, geht mir nicht ganz ein. Leider schweigt sich mein Buch darüber auch tod. Muß ich die Datei erst mit fopen() öffnen oder wie? Ich habe fopen() schon mal ausprobiert, irgendwie hat das nicht hingehauen. > >Nun möchte > >ich diese Adressen nach der Postleitzahl sortieren. Danach sollen sie > >ausgegeben werden. Das habe ich mit "foreach ($array As $line)" und > >ein paar "print" Anweisungen gelöst. > >Kann mir jemand beim sortieren helfen? > Am einfachsten ist es, wenn Du die Zeilen selbst in ein array > zerlegst, also nach dem Einlesen > foreach ($array as $zeile) $narray[] = explode(';', $zeile); Das ist mir klar. explode() ist das gleiche wie split(), oder? > Das kannst Du nun sortieren, z.B. mit usort, dazu brauchst Du eine > Vergleichsfunktion: > function plzcmp($a,$b) > { > return $a[3]==$b[3] ? 0 : (int)$a[3]>(int)$b[3] ? 1 : -1; > } > wobei 3 die Spalte Deines PLZ-Feldes ist (Zählung beginnt mit 0) > Dann kannst Du mit > usort($narray, 'plzcmp'); > Dein $narray nach der 3. (4.) Spalte numerisch sortieren lassen. > Die Ausgabe ist dann > foreach ($narray as $azeile) echo join(';', $azeile)."<BR>\n"; > oder so, jedenfalls sind die einzelnen Zeilen ja jetzt selbst arrays > ... > Alles klar? Nicht wirklich! Das verstehe ich nun wieder überhaupt nicht. Ich habe die ganze Nacht darüber nachgedacht. Ich hätte die ganze Sache mit ein paar if () Abragen und ein bißchen regex gelöst. Das ist aber unheimlich viel Code. Manuel -- There is no doubt that my lawyer is honest. For example, when he filed his income tax return last year, he declared half of his salary as 'unearned income.' -Michael Lara
php::bar PHP Wiki - Listenarchive