Carsten: dokumentiertes umständliches Script

Beitrag lesen

Hi Björn,

Bis zu count($Feld) komm ich noch mit, aber dann is Sense.
Was willst Du mir damit sagen?

ok, kurzes Beispiel:

$feld=array("erdbeere","banane","kirsche","kiwi","himbeere");

dann ist count($feld)==5; und
$feld[0]=="erdbeere"
$feld[1]=="banane"
$feld[2]=="kirsche"
$feld[3]=="kiwi"
$feld[4]=="himbeere"
und feld[5] ist undefiniert. PHP macht da im allgemeinen möglichst keinen
Aufstand von, du bekommst also 0 oder einen Leerstring.
Also $feld[$count($feld)] hat keinen sinvollen Inhalt.
Und wenn du
for($z=count($feld);$z>=0;$z--)
  echo "Feld nr. $z enhält $feld[$z]. <br>";
ausprobierst erhälst du Zeile mit Feld nr. 5 enthält.

Ich hab mal die überarbeitete Version bereitgestellt.
http://www.ascota.de/anzeige.txt

hey, $i heisst ja immer noch nicht $anzahlHaendler ;-)

Ein Bug haste in die Sortierfunktion reingebaut, wenn
$vergleich1==vergleich2 ist (unwahrscheinlich bei Fließkommazahlen,
aber möglich) wird nix zurückgeben. (Z.B.: > durch >= ersetzen).

Ich hab das nun schon von 5 auf 4 kByte kürzen können

Die Grösse des Scripts sagt _nichts_ über sein Laufzeitverhalten aus.

aber dem
ausklinken bei Schlund hat es noch nicht entgegen gewirkt.

Wie liegt das ganze denn so im Timing? Du hast es doch bestimmt auf eigenem
Server getestet. Wie ist die aktuelle Version im Vergleich zur vorherigen ?
Handstoppen sollte reichen, der Schlund-Server lässt dich immerhin 6 sec.
rechnen.

Dazu noch mal die Frage: Wie gross sind die Datensätze ?
Also wieviele Elemente enthält die koord Tabelle und wieviele die
haendler-Tabelle?

Die Rechenoperationen kann ich leider nicht zusammen fassen, da sie
unterschiedlich beginnen. Bei dem einen muß ich für die
AusgangsPLZ noch die Koordinaten suchen, die ich beim 2. schon hab und mir
somit sparen kann.

Dann such sie doch für die erste Version vorher raus, dann kann der Rest mit
einer Routine erledigt werden.

also
if ($zaehler < 10) // es fehlen noch haendler
{
  if ($zaehler==0) // noch gar keiner ->Ausgangskoordinaten fehlen noch
  {
     // Koordinaten zum eingegebenen Ort suchen
     for($z=0;$z<=$j;$z++)
     {
        if($postleitzahl==koord[$z][0]
        {
           // speichern der Koordinaten der gesuchten PLZ
          $merke1=$haendler[$a][1];
          $merke2=$haendler[$a][2];  
          break; // Schleife abbrechen wenn gefunden
        }
     }
   }
   // hier sind jetzt die koordinaten auf jeden Fall verfügbar und
   // du brauchst nur noch eine Version der Entfernungsberechnung
  
   //Entfernungsberechnung für alle Händler zur eingegeben PLZ
   // .....

}

Vielleicht hast Du oder wer anders noch eine Idee.

habe ich:
Was soll das mit dem 'Entfernen der Doppelungen'? Erstmal verstehe ich
den Sinn des ganzen überhaupt nicht. Wieso sollen Händler mit Entfernung
0 zur eingegebene PLZ nicht angezeigt werden? (Bisher angezeigt hast du
ja nur welche mit identischer PLZ, es könnte ja sein das zwei verschiedene
PLZ die gleichen Koordinaten haben) und wieso soll nur ein Haendler mit
gleicher Entfernung zum eingegebenen Ort angezeigt werden?
Ich vermute mal, das diese beiden Fälle einfach nie eintreten und dieser
Routinenteil deswegen nichts tut ausser (viel) Rechenzeit zu verbraten.
Ausserdem: Da du nur (höchstens) die ersten Zehn brauchst, könntest du (beide)
Schleifen abbrechen wenn w>9 ( for($e=$i;$e>=0 && w<9;$e--).

Gruss,
Carsten