Hallo Björn,
Die Textdateien sind _nicht_ dein Problem, sondern die ineffizient Umsetzung.
Wie gross sind die Datensätze eigentlich? Welchen Aufbau haben sie?
So auf Anhieb sehen tue ich nur:
»» $entf[$b][0]=bcsqrt((bcpow($dx,2,10)+bcpow($dy,2,10)),10);
besser:
$entf[$b][0]=Sqrt($dx*$dx + $dy*$dy);
Für mehr müsstest du Variablennamen vergeben die irgendeinen Sinn machen,
so ist das Script ungefähr so lesbar wie disassemblierter Compileroutput.
Tip:
$plz -> $haendler
$i -> $anzahlHaendler
$j -> $anzahlKoord (zumindest da, wo das zutrifft)
Alle Schleifen, die über das gleiche Array zählen bekommen die gleiche
Zählervariable. (z.b. $h für alle Schleifen übers Händler Feld.)
Wech mit den temp1 bis temp5, statt:
»» $temp5=$koord[$z][0];
»» if($temp5==$postleitzahl)
muss da if($koord[$z][0]==$postleitzahl) stehen.
Was merken sich $merke1 und $merke2 ?
Offensichtlich kommen bestimmte Codeteile mehrfach vor. Sowas gehört dann in
eine Funktion.
Arrays fangen -so wie du sie benutzt- bei Null an und gehen bis
count($Feld)-1. Schleife mit Abbruchbedingung $z<=count($Feld) ist also falsch.
Und Schleifen über for($z=ArrayGroesse;$z>=0;$z--) greifen ebenso einmal hinters
Array.
Sortieren macht man nicht selber, sondern mit den eingabauten Sortierfunktionen.
(Und mit usort() kann man auch beliebige (mehrdimensionale) Arrays nach
beliebigen Kriterien sortieren (->Archiv))
Gruss,
Carsten