2017-05-09 17 views
0

Hallo, also ich habe gerade angefangen häufig PHP in der Schule zu tun und jetzt habe ich dieses Projekt in der Schule und wenn mein Code zu diesem Teil bekommt:PHP unendlich for (;;) Schleife

for ($i=0; $i<=sizeof($kentat_taulukkona); +$i) { 
    echo $i; 
    if($i=1) { 
     $a = "=".$arvot_taulukkona[$i]; 
     $aa = $kentat_taulukkona[$i]; 
    } else if($i=2) { 
     $b = "=".$arvot_taulukkona[$i]; 
     $ab = ", ".$kentat_taulukkona[$i]; 
    } else if($i=3) { 
     $c = "=".$arvot_taulukkona[$i]; 
     $ac = ", ".$kentat_taulukkona[$i]; 
    } else if($i=4) { 
     $d = "=".$arvot_taulukkona[$i]; 
     $ad = ", ".$kentat_taulukkona[$i]; 
    } else if($i=5) { 
     $e = "=".$arvot_taulukkona[$i]; 
     $ae = ", ".$kentat_taulukkona[$i]; 
    } else if($i=6) { 
     $f = "=".$arvot_taulukkona[$i]; 
     $af = ", ".$kentat_taulukkona[$i]; 
     break; 
    } 
} 

es wird eine Endlosschleife . Mit diesem Echo habe ich herausgefunden, dass es zuerst eine 0 und danach eine 1 bis zum Ende der Welt gibt. Es könnte nur ein Tippfehler sein, was ich vermisse oder habe ich etwas falsch verstanden, da dies meines Wissens nach funktionieren sollte?

+5

Was denken Sie, '+ $ i' tut? –

+4

über das, was John sagt, "$ i = 1" Sie nicht vergleichen ('=='), Sie setzen. – castis

+0

Dynamische Schleife nach Größe von ($ kentat_taulukkona), aber eine Unterbrechung bei der 6. Iteration. Seltsam ... –

Antwort

2

Sie müssen Verwenden Sie den Vergleichsoperator wie == und nicht den Zuweisungsoperator =

So sollte Ihr Code sein:

if($i==1) { 
    $a = "=".$arvot_taulukkona[$i]; 
    $aa = $kentat_taulukkona[$i]; 
}else if($i==2) { 
    $b = "=".$arvot_taulukkona[$i]; 
    $ab = ", ".$kentat_taulukkona[$i]; 
} else if($i==3) { 
    $c = "=".$arvot_taulukkona[$i]; 
    $ac = ", ".$kentat_taulukkona[$i]; 
} else if($i==4) { 
    $d = "=".$arvot_taulukkona[$i]; 
    $ad = ", ".$kentat_taulukkona[$i]; 
} else if($i==5) { 
    $e = "=".$arvot_taulukkona[$i]; 
    $ae = ", ".$kentat_taulukkona[$i]; 
}else if($i==6) { 
    $f = "=".$arvot_taulukkona[$i]; 
    $af = ", ".$kentat_taulukkona[$i]; 
    break; 

Auch wenn Sie Erhöhung Wert von $ i durch Verwendung behalten möchten $ i ++ so wie Ihr Code aussehen zu machen:

for ($i=0; $i<=sizeof($kentat_taulukkona); $i++) { 
    echo $i; 
    if($i==1) { 
     $a = "=".$arvot_taulukkona[$i]; 
     $aa = $kentat_taulukkona[$i]; 
    } else if($i==2) { 
     $b = "=".$arvot_taulukkona[$i]; 
     $ab = ", ".$kentat_taulukkona[$i]; 
    } else if($i==3) { 
     $c = "=".$arvot_taulukkona[$i]; 
     $ac = ", ".$kentat_taulukkona[$i]; 
    } else if($i==4) { 
     $d = "=".$arvot_taulukkona[$i]; 
     $ad = ", ".$kentat_taulukkona[$i]; 
    } else if($i==5) { 
     $e = "=".$arvot_taulukkona[$i]; 
     $ae = ", ".$kentat_taulukkona[$i]; 
    } else if($i==6) { 
     $f = "=".$arvot_taulukkona[$i]; 
     $af = ", ".$kentat_taulukkona[$i]; 
     break; 
    } 
} 

UPDATE wie von @SterlingBeason Bitte beachten Sie, dass Sie das Präfix ++ $ i oder den Operator postfix $ i ++ nach Ihren Bedürfnissen verwenden. Um mehr über die Operatoren im Detail zu lesen, überprüfen Sie die Antwort unter SO What's the difference between ++$i and $i++ in PHP?

+0

Und auch tun, was Sterling vorgeschlagen mit '++ $ i' –

+0

@ JeremyHarris schon das ..;) Danke für den Vorschlag .. –

+0

@ShaktiPhartiyal vor dem Anhängen und Anhängen der" ++ "an eine int-Variable verschiedene Dinge tun. Das ++ muss die $ i-Variable für die erste zu erfüllende IF-Bedingung als wahr voranstellen. ($ i == 1) –

0

Ändern Sie die erste Zeile der Schleife dazu:

for ($i=0; $i<=sizeof($kentat_taulukkona); ++$i) { .... 

Und Ihre IF-Anweisungen auf diese geändert werden muss (doppelte Gleichheitszeichen Gleichheit zu testen):

if($i==1) {...