【发布时间】:2023-07-20 11:04:01
【问题描述】:
真正想知道但从未发现的东西是 PHP 中的快捷方式。
我目前正在编写一个带有foreach 循环的函数,其中只有一个语句。我试图省略花括号,就像在 if/else 控制结构中可以做的那样,它可以工作。没有错误。
foreach($var as $value)
$arr[] = $value;
现在我尝试以相同的方式使用它,但在其中放置了一个 if/else 块。再次,正常工作,没有错误。
foreach($var as $value)
if(1 + 1 == 2) {
$arr[] = $value;
};
然后,我想“为什么会这样?”并省略了结束分号。还在工作。因此,我尝试在 foreach 循环中使用不带花括号的 if/else 语句,并且再次使用,仍然有效且没有错误。但是 foreach 循环现在真的关闭/结束了吗?
foreach($var as $value)
if(1 + 1 == 2)
$arr[] = $value;
至少我再次省略了结束分号,并且(如预期的那样)发生了解析错误。
所以我的大问题是:我什么时候可以省略花括号以及在哪个结构/循环/函数中?我知道我绝对可以在if 和else 中这样做。但是while、for 和foreach 呢?
是的,我知道它不安全、不聪明,无论在没有花括号的情况下进行编码,还有像 $condition ? true : false; 和 if: doSomething(); endif;、endfor; 和 endforeach; 这样的速记。我不想学习速记我只想了解何时何地可以省略大括号的条件。
【问题讨论】:
-
顺便说一下,没有必要在右大括号后放置分号。 this 的句法含义是在它们之间添加一个空语句。除了在 C 和 C++ 中声明
struct和class之外,所有类 C 语言都是如此。 -
您需要了解语句和表达式之间的区别才能了解何时可以省略大括号。然后仍然需要对表达凝聚力有深刻的理解。
标签: php if-statement foreach curly-braces