有条件的循环PHP

时间:2016-09-13 17:57:56

标签: php

如果条件A为真,则使用设置A,条件用于循环,如果为假,则使用设置B,用于循环的条件。

if ($_POST['Latest'] == 1): 
    for ($i=$date_to; $i>=$date_from; $i-=86400)  
else:  
    for ($i=$date_from; $i<=$date_to; $i+=86400) 
endif;

此代码给出了一个Parse错误:语法错误,意外的T_ELSE。

4 个答案:

答案 0 :(得分:3)

    if ($_POST['Latest'] == 1){ 
          for ($i=$date_to; $i>=$date_from; $i-=86400){
             // EXECUTE SOME CODE...
          }
      }else{
          for ($i=$date_from; $i<=$date_to; $i+=86400){
             // EXECUTE SOME CODE...
          }
      }
    }

答案 1 :(得分:1)

这里有正确的代码:

if ($_POST['Latest'] == 1) { 
    for ($i=$date_to; $i>=$date_from; $i-=86400) {
        // do stuff
    }
} else {  
    for ($i=$date_from; $i<=$date_to; $i+=86400) {
        // do stuff
    }
}

答案 2 :(得分:0)

你需要在for循环之后添加一些东西,添加大括号或者更好,然后使用更好的语法,如前面的答案所示。

没有花括号的for循环下一个语句。所以基本上你会尝试“其他”$date_from次。

你的代码应该像这样工作:

if ($_POST['Latest'] == 1): 
    for ($i=$date_to; $i>=$date_from; $i-=86400) {}
else:  
    for ($i=$date_from; $i<=$date_to; $i+=86400) {}
endif;

答案 3 :(得分:0)

您可以查找以下语法:

$l = (int) filter_input(INPUT_POST, 'Latest', FILTER_SANITIZE_NUMBER_INT);
for (
  $i = ($l ? $date_from : $date_to);
  $l ? $i >= $date_from : $i <= $date_to;
  $i += 86400 * ($l ? -1 : 1)
):
  continue;
endfor;