2011-06-02 42 views
6

碰巧,在編寫一些PHP代碼時,我無意中在if語句後面加上了分號;。例如:if();那麼,分號恰好在括號之後?

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

我認爲在這種情況下PHP應該引發錯誤,但事實並非如此。這種語法應該有意義,我只是想知道它是什麼。

對於我所看到的情況似乎總是如此,當添加;,但我不確定這一切是什麼意思。

+0

它並不是因爲它有任何神聖的目的,而是從語法的角度來看它是有意義的(或者至少不會導致解析困難)。有時'for'循環不需要body,儘管我更喜歡它用花括號寫成'for($ a; $ b; $ c){}'。 – Matthew 2011-06-02 21:30:40

回答

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);'本身*應該是*有效的語法,如果是的話,它的用途是什麼。編輯:或許這不是他要問的,但我發現這是一個更有趣的問題,無論如何。 :) – 2011-06-02 21:13:35

+0

這就是爲什麼代碼之間的代碼總是執行,感謝這麼快的迴應 – Dalen 2011-06-02 21:15:16

+0

@Dalen,你明白了。 – aioobe 2011-06-02 21:15:52

1

添加分號基本上會在花括號之前結束if塊。這不是事實,只是你在if中沒有做任何事情。

想想看這樣的,如果你沒有括號:

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

做的第一分號之前,如果裏面的一切。所以在你的情況下,第一個分號之前什麼都沒有,所以沒有任何反應。

相關問題