2010-11-25 5 views
0

J'ai une boucle while qui contient une instruction if. La boucle while fonctionne correctement, mais lorsque j'exécute l'instruction if suivante pour chaque valeur passée à travers la boucle while, et que l'instruction if renvoie true, le script se bloque et j'obtiens l'erreur de temps d'exécution maximale de 30 secondes.Si l'instruction se bloque

Je ne suis pas sûr s'il crée une boucle infinie ou quoi. Quelqu'un peut-il repérer le problème?

$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

Cela pourrait être beaucoup plus simple avec une boucle 'foreach'. – deceze

Répondre

4

Vous n'incrémenter $i, c'est-ce qui l'accrocher comme il sera toujours < $size

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

Vous n'incrémenter $i. Essayez une boucle for à la place; ils sont un peu plus explicites.

2

vous ne changez $ i dans la boucle while

3

Vous devez incrémenter i $ quelque part à l'extérieur de l'instruction if.

2

vous devez incrémenter i $ pour chaque boucle ou bien si son vrai une fois qu'il sera toujours passer ajouter $ i ++ entre le dernier 2 }} il semble } $ i ++; }