我正在编写一个脚本来制作文本块并通过短信发送。今天早些时候,我正在审查一些代码,将字符串拆分成块,然后我看到了一些我以前从未见过的东西。我在谈论“;”就在片段的“。”后面。
为什么这个结肠?我知道它有效,但我不知道它是否为解释器添加了一些语义或一些指令,任何人都知道这是为了什么?
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;
};
};
编辑:看起来很清楚分号和多个分号一起对结果没有影响,但是,你知道它是否对解释器有影响吗?是在解析它时在内部执行某项任务吗?
答案 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)只是..建议不这样做。