没有逻辑语句的花括号的目的是什么?

时间:2017-07-27 03:19:52

标签: php

我有一段代码没有像我预期的那样工作。

代码大致如下:

foreach ($arrayOfIds as $iterId)
{
    if ($iterId === $unchangingId)
    {
        // ...
    }

}

问题在于,无论ID是否匹配,它都会进入if语句。

然后我注意到我的if语句被错误地声明了,实际上看起来像这样:

if ($iterId === $unchangingId);
{
    // ...
}

那个单一的半冒号给了我很多悲伤。

现在,我知道如何/为什么我没有得到编译器或运行时错误,因为     if($ iterId === $ unchangingId);

但是我从来不知道你可以将代码放在2个花括号中,没有别的东西。

我想更多地了解这个以及它的用途,如果有人能详细说明,我将非常感激!

2 个答案:

答案 0 :(得分:1)

if ($iterId === $unchangingId);
{
    // ...
}

这是两个独立且不相关的结构。

if构造可以采用以下形式:

if (expression) statement;

与单个语句一起使用时没有花括号,并且该语句不必包含任何内容,但是终止分号。所以

if ($iterId === $unchangingId);

是一个完整的,独立的东西,然后您将跟随大括号中包含的无关语句块:

{
    // ...
}

没有什么特别之处,内容的处理就像花括号不在那里一样。

答案 1 :(得分:1)

在Java中,裸花括号块具有局部范围。在PHP中,它没有做任何事情。