2016-09-13 18 views
-2

条件AがTrueの場合は、ループとし、falseを使用する場合は、のループを条件とします。ループはとなります。条件付きForループPHP

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

このコードは、構文解析エラー:予期しないT_ELSEを返します。

+4

あの、明らかにあなたは –

+0

があなたのループが行うに何を期待していることはできません? – dckuehn

答えて

2
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

ここで適切なコードです:

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 
    } 
} 
0

は、あなたは、中括弧を追加したり、いっその以前の回答が示唆するように、より優れた構文を使用し、forループの後に何かを追加する必要があります。

中かっこなしの場合は、次のステートメントをループします。だから根本的にあなたは "else"にしようとする$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; 
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;