Lennart: Endlos Schleife

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

  1. 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 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;
            }
        }
    }

    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

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. 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

      --
      "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
  2. 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

    --
    Wenn der Computer wirklich alles kann,
    dann kann er mich mal kreuzweise.
  3. 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.

    1. 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";