在PHP中关闭花括号后的分号

时间:2010-11-30 15:36:32

标签: php

我正在编写一个脚本来制作文本块并通过短信发送。今天早些时候,我正在审查一些代码,将字符串拆分成块,然后我看到了一些我以前从未见过的东西。我在谈论“;”就在片段的“。”后面。

为什么这个结肠?我知道它有效,但我不知道它是否为解释器添加了一些语义或一些指令,任何人都知道这是为了什么?

while(1)
{
    $length = (strlen($output)+strlen($words[$i]));
    if($length>$new_max)
    {
        if(count($words) > 0)
        {
            $out_array[] = $output;
            $output = '';

        }
        else
        {
            break;    
        }
    }
    else
    {
        $output = $output." ".$words[$i];
        ++$i;
    };
};

编辑:看起来很清楚分号和多个分号一起对结果没有影响,但是,你知道它是否对解释器有影响吗?是在解析它时在内部执行某项任务吗?

4 个答案:

答案 0 :(得分:13)

我认为这两个分号在这里什么都不做。它可能被紧接在if / while之后解释为空表达式。

答案 1 :(得分:4)

这些是不必要的。他们不会伤害剧本,只是不必要。程序员可能习惯在每个语句的末尾添加分号。也许他从另一种编程语言习惯了这个习惯,也许他的IDE在没有分号的情况下显示错误,或者他只是一个初学者。无论如何,既没有伤害也没有帮助。 程序员使用while(1)的事实也告诉我他要么非常懒,因为通常程序员会写(而真),输入1的唯一原因是因为输入的次数较少。任何类型的正式培训的程序员都不会在(1)而不是while(true)时写入。 这只是我的观点,但它基于超过10年的3种语言编程。

答案 2 :(得分:1)

在某些情况下,您需要在结束大括号后使用分号!

示例:

if(1==1):
    if(true){ echo "it's true"; } //no semicolon here => syntax error!
else:
    echo "no never ever";
endif;

当然,如果只有php代码,你就不会使用替代语法来控制结构。

但是如果你有混合的HTML和PHP代码,你可以使用控制结构的替代语法(替代语法使代码更清晰,更容易阅读),但问题是在某些情况下是插件或者例如,cms的标记解析器可以在“else:”之前生成带有大括号(不带“结束分号”)的if语句,这会导致生成的php文件出现语法错误。

上面的代码可以这样工作:

if(1==1):
    if(true){ echo "it's true"; }; 
else:
    echo "no never ever";
endif;

答案 3 :(得分:0)

有些人使用// endwhile或// endif来表示它来自哪里。其他人在括号后放置了半冒号。这两种技术都是无害的,只是归结为开发人员。

我猜测这个程序员不相信他们自己的编码,也是没有样式的文本书编码 - 支撑位置,不一致的间距和while(1)只是..建议不这样做。