i ++ on if if条件不起作用

时间:2014-08-22 11:37:46

标签: php html if-statement while-loop

我的问题是,

我正在尝试遍历我的代码如果它找到'weekdag'正确的记录。我想我的代码卡住了,因为它在我的if语句中,但我确实需要它。解决办法是什么?

<?php

$i = 0;
while ($i <= 6) {

    $weekdag = mysql_result($result, $i, "weekdag");

    if ($i == 1) {

        if ($weekdag == "1") {
            echo "<td><input name='weekdag1' value='1' type='checkbox' onChange='this.form.submit()' checked><input name='weekdag10' type='hidden' value='1'></td>";
            $i++;
        } else {
            echo "<td><input type='checkbox' name='addweek' value='1' onChange='this.form.submit()'></td>";
        }

        if ($weekdag == "2") {
            echo "<td><input name='weekdag2' value='2' type='checkbox' onChange='this.form.submit()' checked><input name='weekdag20' type='hidden' value='2'></td>";
            $i++;
        } else {
            echo "<td><input type='checkbox' name='addweek' value='2' onChange='this.form.submit()'></td>";
        }

        if ($weekdag == "3") {
            echo "<td><input name='weekdag3' value='3' type='checkbox' onChange='this.form.submit()' checked><input name='weekdag30' type='hidden' value='3'></td>";
            $i++;
        } else {
            echo "<td><input type='checkbox' name='addweek' value='3' onChange='this.form.submit()'></td>";
        }

        if ($weekdag == "4") {
            echo "<td><input name='weekdag4' value='4' type='checkbox' onChange='this.form.submit()' checked><input name='weekdag40' type='hidden' value='4'></td>";
            $i++;
        } else {
            echo "<td><input type='checkbox' name='addweek' value='4' onChange='this.form.submit()'></td>";
        }

        if ($weekdag == "5") {
            echo "<td><input name='weekdag5' value='5' type='checkbox' onChange='this.form.submit()' checked><input name='weekdag50' type='hidden' value='5'></td>";
            $i++;
        } else {
            echo "<td><input type='checkbox' name='addweek' value='5' onChange='this.form.submit()'></td>";
        }

        if ($weekdag == "6") {
            echo "<td><input name='weekdag6' value='6' type='checkbox' onChange='this.form.submit()' checked><input name='weekdag60' type='hidden' value='6'></td>";
            $i++;
        } else {
            echo "<td><input type='checkbox' name='addweek' value='6' onChange='this.form.submit()'></td>";
        }

        if ($weekdag == "7") {
            echo "<td><input name='weekdag7' value='7' type='checkbox' onChange='this.form.submit()' checked><input name='weekdag70' type='hidden' value='7'></td>";
            $i++;
        } else {
            echo "<td><input type='checkbox' name='addweek' value='7' onChange='this.form.submit()'></td>";
        }
    }
}

4 个答案:

答案 0 :(得分:2)

在第一个循环中,

$i = 0

并且它不会增加,因为if语句仅适用于$i=1。 所以这是一个无限循环。

也许你需要:

if ($i == 1) {
  //...
}
else
{
  $i++;
}

答案 1 :(得分:0)

我在这看到两个挑战;

  • 您的实际问题
  • 重复代码的数量

这就是我所做的

$i = 0;
while($i <= 6) {

    $weekdag = mysql_result($result, $i, "weekdag");

    $weekdag10 = $i * 10;

    if($i == 1) {
        if($weekdag == $i) {
            echo "<td><input name='weekdag". $i ."' value='". $i ."' type='checkbox' onChange='this.form.submit()' checked><input name='weekdag". $weekdag10 ."' type='hidden' value='". $i ."'></td>";
            $i++;
        } else {
            echo "<td><input type='checkbox' name='addweek' value='". $i ."' onChange='this.form.submit()'></td>";
        }
    }

}

编辑

阅读答案评论后

  

还没到那里。如果我很生气,我很抱歉。我会尝试进一步解释。我试图找到一个命中,例如我的$ i = 1.我想看看这个$ i = 1,其中有一些&#39; weekdag&#39;是隐藏的。例如,数字是3.所以我会找到它。如果weekdag = 1 {} else {},如果weekdag = 2 {} else {},如果weekdag = 3(是,它现在是循环!!!){} else {}。为什么我希望代码执行此操作,如果它找到了一个命中我不希望其余的在这种情况下为weekdag = 4,weekdag = 5,weekdag = 6,weekdag = 7将被执行

那么也许是这样的事情;

$weekdag = mysql_result($result, $i, "weekdag");
//A list of all available $weekdags
$arrWeekdags = array(1,2,3,4,5,6);

if( in_array($weekdag, $arrWeekdags) ) {
    //We have found a match!
    echo "<td><input name='weekdag". $weekdag ."' value='". $weekdag ."' type='checkbox' onChange='this.form.submit()' checked><input name='weekdag". ($weekdag * 10) ."' type='hidden' value='". $weekdag ."'></td>";

    //Remove it from the list of available weekdags
    unset($arrWeekdags[$weekdag]);
}

foreach($arrWeekdags as $intWeekdag) {
    echo "<td><input type='checkbox' name='addweek' value='". $intWeekdag ."' onChange='this.form.submit()'></td>";
}

答案 2 :(得分:0)

你永远不会增加i的值,所以它永远停留在0.尝试在循环的最后添加$i++;

if ($i == 1) {
  //...
}
$i++;

并从条件语句中删除所有$i++;

答案 3 :(得分:0)

在结束之前增加$ i,每次都必须增加。

 while ($i <= 6) {
      if ($i == 1) {
        ....
      } 

      $i++;
 }