如果声明挂断了

时间:2010-11-25 04:42:38

标签: php regex if-statement while-loop infinite-loop

我有一个包含if语句的while循环。 while循环工作正常但是当我为通过while循环传递的每个值运行以下if语句,并且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 个答案:

答案 0 :(得分:4)

你永远不会增加$i,因为它总是< $size

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

答案 1 :(得分:3)

你永远不会增加$i。尝试使用for循环;他们更明确一点。

答案 2 :(得分:3)

你需要在if语句之外的某处增加$ i。

答案 3 :(得分:2)

你永远不会在while循环中改变$ i

答案 4 :(得分:2)

你必须为每个循环增加$ i,否则如果它总是通过则为true 在最后2个之间添加$ i ++ } } 所以它看起来 } $ I ++; }