2011-06-02 10 views
6

PHPコードを書くときに、誤ってif文の直後にセミコロン;を置いてしまいました。例:if(); do、セミコロンは括弧の直後にありますか?

if($a > 1); 
{ 
    .... 
} 

この場合、PHPでエラーが発生するはずですが、そうではありません。そのような文法には意味があるはずですが、私はそれが何であるか不思議です。

;が追加されたときの状態は常に真であると思われますが、これはすべて意味がわかりません。

+0

これは神聖な目的を持っているのではなく、文法的な観点からは意味がある(または少なくとも構文解析の難しさを引き起こさない)からです。 'for($ a; $ b; $ c){}'として中括弧で書かれた方が好きですが、 'for'ループにはボディは必要ありません。 – Matthew

答えて

14

シングル; "空の文" と

if($a > 1); 
{ 
    .... 
} 

として読み取ることができますが、私は状況を見ることができるものについては

if($a > 1) 
    ;  // execute an empty statement if $a > 1 

// then execute the following block of code. 
{ 
    .... 
} 


に相当しますいつも真実であるように思われる;は、ブロックは関係なく、if文の実行されるので、それはそれだけのように思える

が追加されます。

+1

私は彼がなぜ 'if($ a> 1);それだけで*有効な構文でなければならないのかを尋ねていると思います。編集:またはそれは彼が求めているものではないかもしれませんが、私はそれがとにかくより興味深い質問であることがわかります。 :) –

+0

その理由は、ブラケット間のコードが常に実行される、そのような高速応答のためにありがとう – Dalen

+0

@Dalen、あなたはそれを持っています。 – aioobe

1

セミコロンを追加すると、本質的に、中括弧の前にifブロックが終了します。それは真実ではありません、それはあなたがifで何もしないことです。あなたは括弧を持っていない場合

は、このようにそれについて考える:

if($a>1) 
    echo "Yes"; 
echo "No"; 

があれば内部の最初のセミコロンの前にすべてを行います。あなたの場合、最初のセミコロンの前には何もないので、何も起こりません。

関連する問題