2011-06-02 49 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"; 

做的第一分号之前,如果里面的一切。所以在你的情况下,第一个分号之前什么都没有,所以没有任何反应。