- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
真正想知道但从未发现的东西是 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;
至少我再次省略了结束分号并且(如预期的那样)发生了解析错误。
所以我的大问题是:我什么时候可以省略大括号以及在哪个结构/循环/函数中?我知道我绝对可以在 if
和 else
中这样做。但是 while
、for
和 foreach
呢?
是的,我知道在没有大括号的情况下编写代码并不安全、不聪明,而且还有像 $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/
我是一名优秀的程序员,十分优秀!