真正想知道但从未发现的是PHP中的快捷方式。
我目前正在用一个foreach循环在一个函数内编码一个函数。我试图省略花括号,就像您在if / else控制结构中所做的那样,它可以正常工作。没有错误。
foreach
foreach($var as $value) $arr[] = $value;
现在,我尝试以相同的方式使用它,但在其中放置了一个if / else块。再次,工作,没有错误。
foreach($var as $value) if(1 + 1 == 2) { $arr[] = $value; };
然后,我以为“这为什么起作用?” 省略了分号。还在工作。因此,我尝试在ifeach循环中使用if / else语句,但不使用花括号,仍然可以正常工作,并且没有错误。但是,foreach循环现在真的关闭/结束了吗?
foreach($var as $value) if(1 + 1 == 2) $arr[] = $value;
至少我再次省略了分号,并且(如预期的那样)发生了解析错误。
所以我的大问题是:什么时候可以省略花括号,以及在哪个结构/循环/功能中?我知道我绝对可以在if和else。可是你知道while,for和foreach?
if
else
while
for
是的,我知道这是不安全,聪明的,无论使用哪种花括号而不用花括号进行编码,并且都有诸如$condition ? true : false;和if: doSomething(); endif;,endfor;和的简写形式endforeach;。我不想了解速记,我只是想了解有关何时何地可以省略大括号的条件。
$condition ? true : false;
if: doSomething(); endif;
endfor;
endforeach;
当省略括号时,它将仅将下一个语句视为条件主体。
if ($x) echo 'foo';
是相同的
if ($x) { echo 'foo'; }
但请记住
if ($x) echo 'foo'; echo 'bar';
将 始终 打印“栏”
在内部,这是另一种方式:if仅查看下一个表达式,但是PHP将所有内容都{}视为单个“分组”表达式。
{}
其他控制语句(foreach,依此类推)相同