Если заявление вешается - PullRequest
       21

Если заявление вешается

0 голосов
/ 25 ноября 2010

У меня есть цикл while, который содержит оператор if.Цикл while работает нормально, но когда я запускаю следующий оператор if для каждого значения, прошедшего через цикл while, и оператор if возвращает true, сценарий зависает, и я получаю ошибку максимального времени выполнения 30 секунд.Я не уверен, создает ли он бесконечный цикл или что.Кто-нибудь может определить проблему?

$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



}
}

Ответы [ 5 ]

4 голосов
/ 25 ноября 2010

Вы никогда не увеличиваете $i, это то, что его вешает, поскольку оно всегда будет < $size

while ($i < $size) { // changed this to >
    // define each variable
    $itemname= $_POST['itemname'][$i];
    $id = $_POST["id"][$i];
    $i++; // increment $i
3 голосов
/ 25 ноября 2010

Вам нужно увеличить $ i где-то за пределами оператора if.

3 голосов
/ 25 ноября 2010

Вы никогда не увеличиваете $i. Вместо этого попробуйте цикл for; они немного более явные.

2 голосов
/ 25 ноября 2010

Вы должны увеличивать $ i для каждого цикла, иначе, если его значение true, когда он всегда будет проходить, добавьте $ i ++ между последними 2}}, чтобы он выглядел} $ i ++;}

2 голосов
/ 25 ноября 2010

вы никогда не меняете $ i в цикле while

...