Endlos Schleife
Lennart
- php
0 Tom0 Der Martin0 Lennart0 dedlfix
Guten Abend,
ich hab ein...endloses Problem. Meine Schleife hackt und ich weiß nicht wieso. Ich bekomme immer den Fehler:
Maximum execution time of 60 seconds exceeded
Ich poste einfach mal meinen Code
for ($lol=0;$lol<=12;$lol++)
{
$lol++;
while($schleife3 == false)
{
if($teile3[$lol] != "0" && $teile4[$lol] == "bogenschütze")
{
$vbs2 = $teile4[$lol+1]*5;
$vbs = round($vbs2);
if($teile3[$lol] == "bogenschütze")
{
$teile3[$lol+1]= round((($teile3[$lol+1]*6) -$vbs)/6);
if($teile3[$lol+1] <= 0)
{
$teile3[$lol+1]= 0;
}
else
{
$abs2 = $teile3[$lol+1]*5;
$abs = round($abs2);
$teile4[$lol+1]= round((($teile4[$lol+1]*6) -$abs)/6);
if($teile4[$lol+1] <= 0)
{
$teile4[$lol] = 0;
}
}
}
}
if($teile3[$lol] == "0" or $teile4[$lol] == "0")
{
$schleife3 = true;
}
}
}
Hoffe ihr könnt mir helfen danke im vorraus
Hello,
Guten Abend,
ich hab ein...endloses Problem. Meine Schleife hackt und ich weiß nicht wieso. Ich bekomme immer den Fehler:
Maximum execution time of 60 seconds exceededIch poste einfach mal meinen Code
for ($lol=0;$lol<=12;$lol++)
{
$lol++;
while($schleife3 == false)
{
if($teile3[$lol] != "0" && $teile4[$lol] == "bogenschütze")
{
$vbs2 = $teile4[$lol+1]*5;
$vbs = round($vbs2);if($teile3[$lol] == "bogenschütze")
{
$teile3[$lol+1]= round((($teile3[$lol+1]*6) -$vbs)/6);
if($teile3[$lol+1] <= 0)
{
$teile3[$lol+1]= 0;
}
else
{
$abs2 = $teile3[$lol+1]*5;
$abs = round($abs2);
$teile4[$lol+1]= round((($teile4[$lol+1]*6) -$abs)/6);
if($teile4[$lol+1] <= 0)
{
$teile4[$lol] = 0;
}
}
}
}
if($teile3[$lol] == "0" or $teile4[$lol] == "0")
{
$schleife3 = true;
}
}
}
Und ich hoffe, dass man es nun leichter lesen kann.
Welche der Schleifen terminiert denn nicht?
Ich habe das jetzt nicht nachvollzogen, denn dafür fehlen mir ja die Rahmenbedingungen, aber es kommt mir doch eher so vor, als ob es die while-Schleife ist, die nicht enden will?
Welche Kontrollausgaben hast Du denn schon eingebaut?
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hi!
Welche der Schleifen terminiert denn nicht?
[..] als ob es die while-Schleife ist, die nicht enden will?
Welche Kontrollausgaben hast Du denn schon eingebaut?
Drei Fragen auf einmal? Der OP ist doch kein Ü-Ei..
off:PP
Hallo,
Meine Schleife hackt ...
auf wem rum?
for ($lol=0;$lol<=12;$lol++)
{
$lol++;
Das ist schon mal merkwürdig: Die Schleifenvariable innerhalb der Schleife erneut zu incrementieren, sieht schwer nach einem Denkfehler aus. Im ersten Schleifendurchlauf hat $lol damit den Wert 1, im zweiten den Wert 3 usw.
while($schleife3 == false)
Oder kürzer und verständlicher:
while(!$schleife3)
Ich nehme an, $schleife3 ist aus einem Stück Programm weiter oben, das hier nicht zitiert wurde, bereits definiert?
if($teile3[$lol] == "0" or $teile4[$lol] == "0")
{
$schleife3 = true;
}
Und du bist sicher, dass diese Bedingung mit deiner doppelt incrementierten Schleifenvariable wirklich zutreffen kann? Denn wenn nicht, ist die while-Schleife diejenige, die endlos läuft.
So long,
Martin
Hi,
Ja es gibt noch andere Schleifen die habe ich aber entfernt und es liegt sicherlich an dieser.
Die Variable $Schleife 3 ist auch weiter oben mit false definiert.
Ich muss es doppelt incrementierten damit ich die richtigen Werte aus den Arrays auslese.
Das merkwürdige ist wenn ich die for Schleife entferne und manuell die richtigen Werte eintrage damit aus dem Array gelesen werden kann funktioniert es.
echo $begrüßung;
Ja es gibt noch andere Schleifen die habe ich aber entfernt und es liegt sicherlich an dieser.
Du könntest dich vergewissern, indem du an strategisch wichtigen Stellen - beispielsweise nach einer dieser Schleifen - eine Kontrollausgabe machst.
echo 'hab grad diese schleife gebunden'; flush();
Das flush() ist nötig, um den Server zu bitten, er möge seinen Ausgabepuffer jetzt sofort in Richtung Client entleeren, damit du die Ausgabe sogleich erhältst.
Das merkwürdige ist wenn ich die for Schleife entferne und manuell die richtigen Werte eintrage damit aus dem Array gelesen werden kann funktioniert es.
Auch hier können Kontrollausgaben (der relevanten Variableninhalte) Merkwürdiges erhellen und zu einem Erkenntnisgewinn beitragen.
echo "$verabschiedung $name";