if ( 「論理式」 ) {
「真の処理」
}else {
「偽の処理」
}
および
if ( 「論理式」 ) :
「真の処理」
else :
「偽の処理」
endif;
において、下の構文の処理内に、上の構文をいれた以下のようなコードを書いたところ、文法エラーが発生した。
if ( 「論理式1」 ) :
if ( 「論理式2」 ) {
「処理1」
}
else :
「処理2」
endif;
Parse error: syntax error, unexpected ':' in XXX(else : の行)
あれ、どこかで括弧閉じ忘れたかな、としばらく右往左往・・・
以下の様に変更すると、エラーは発生しない。
if ( 「論理式1」 ) :
if ( 「論理式2」 ) :
「処理1」
endif;
else :
「処理2」
endif;
以下のリンク先ページにある、「注意: 同じブロック内で別の構文を混ぜて使うことはできません。」というのは、このことなのか。
http://php.net/manual/ja/control-structures.alternative-syntax.php
ただし、これを以下の様にしてもエラーは発生しなかった。
if ( 「論理式1」 ) :
if ( 「論理式2」 ) {
「処理」
}else {
「空文」
}
if ( 「論理式2」 ) {
「処理」
}else {
「空文」
}
endif;
組み合わせによって、エラーが発生したりしなかったりするようだ。まあ、そもそも別の構文を混ぜちゃだめだと言われれば仕方ないけど、通っちゃう場合もあるというのは混乱を招くよね。
組み合わせによって、エラーが発生したりしなかったりするようだ。まあ、そもそも別の構文を混ぜちゃだめだと言われれば仕方ないけど、通っちゃう場合もあるというのは混乱を招くよね。
0 件のコメント:
コメントを投稿