gpt4 book ai didi

PHP - If/else, for, foreach, while - 没有花括号?

转载 作者:IT王子 更新时间:2023-10-28 23:56:37 25 4
gpt4 key购买 nike

真正想知道但从未发现的东西是 PHP 中的快捷方式。

我目前正在用 foreach 循环编写一个函数,其中只有一个语句。我试着省略花括号,就像您在 if/else 控制结构中所做的那样,它起作用了。没有错误。

foreach($var as $value)
$arr[] = $value;

现在我尝试以相同的方式使用它,但在其中放置了一个 if/else block 。再次,工作正常,没有错误。

foreach($var as $value)
if(1 + 1 == 2) {
$arr[] = $value;
};

然后,我想“为什么这行得通?”并省略了结束分号。还在工作。因此,我尝试在 foreach 循环中再次使用不带花括号的 if/else 语句,仍然有效且没有错误。但是 foreach 循环现在真的关闭/结束了吗?

foreach($var as $value)
if(1 + 1 == 2)
$arr[] = $value;

至少我再次省略了结束分号并且(如预期的那样)发生了解析错误。

所以我的大问题是:我什么时候可以省略大括号以及在哪个结构/循环/函数中?我知道我绝对可以在 ifelse 中这样做。但是 whileforforeach 呢?

是的,我知道在没有大括号的情况下编写代码并不安全、不聪明,而且还有像 $condition 这样的简写形式? true : false;if: doSomething(); endif;endfor;endforeach;。我不想了解速记,我只想了解有关何时何地可以省略大括号的条件。

最佳答案

当您省略大括号时,它只会将下一条语句视为条件的主体。

if ($x) echo 'foo';

相同
if ($x) { echo 'foo'; }

但请记住这一点

if ($x)
echo 'foo';
echo 'bar';

总是打印“bar”

在内部它是另一种方式:if 将只查看下一个表达式,但 PHP 将 {} 中的所有内容视为单个“分组”表达式。

其他控制语句(foreach等)也一样

关于PHP - If/else, for, foreach, while - 没有花括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8726339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com