2010-11-25 11 views
0

Ich habe eine while-Schleife, die eine if-Anweisung enthält. Die while-Schleife funktioniert einwandfrei, aber wenn ich die folgende if-Anweisung für jeden über die while-Schleife übergebenen Wert ausführe und die if-Anweisung true zurückgibt, legt das Skript auf und ich erhalte den maximalen Ausführungszeitfehler von 30 Sekunden.Wenn Anweisung aufgelegt wird

Ich bin mir nicht sicher, ob es eine Endlosschleife oder was erstellt. Kann jemand das Problem erkennen?

$size = count($_POST['itemname']); 

// start a loop in order to update each record 
$i = 0; 
while ($i < $size) { 
// define each variable 
$itemname= $_POST['itemname'][$i]; 
$id = $_POST["id"][$i]; 


if(preg_match('/[A-Za-z]/',$itemname)) { 

echo("has words"); 

} else { 

//update code here 



} 
} 
+3

Dies könnte mit einer 'foreach'-Schleife viel einfacher sein. – deceze

Antwort

4

Sie $i nie erhöhen, ist es das, was es auflegt, wie es immer < $size

while ($i < $size) { // changed this to > 
    // define each variable 
    $itemname= $_POST['itemname'][$i]; 
    $id = $_POST["id"][$i]; 
    $i++; // increment $i 
3

Sie nie $i erhöht sein wird. Probieren Sie stattdessen eine for-Schleife aus. Sie sind ein wenig expliziter.

2

Sie nie i ändern $ in der while-Schleife

3

Sie benötigen $ i irgendwo außerhalb der if-Anweisung zu erhöhen.

2

Sie haben $ zu erhöhen i für jede Schleife oder auch wenn seine wahre, sobald es immer passieren plus $ i ++ zwischen der letzten 2 } } so sieht es } $ i ++; }

Verwandte Themen