真正想知道但从未发现的东西是PHP的快捷方式.
我目前正在编写一个带有foreach循环的函数,里面只有一个语句.我试图省略花括号,因为你可以在if/else控制结构中做,它可以工作.没有错误.
foreach($var as $value)
$arr[] = $value;
Run Code Online (Sandbox Code Playgroud)
现在我尝试以相同的方式使用它,但在其中放入一个if/else块.再次,工作,没有错误.
foreach($var as $value)
if(1 + 1 == 2) {
$arr[] = $value;
};
Run Code Online (Sandbox Code Playgroud)
然后,我想"为什么这有效?" 并省略了结束分号.还在工作.所以我尝试在foreach循环中使用if/else语句而没有花括号,并再次使用,仍然正常,没有错误.但是foreach循环现在真的关闭/结束了吗?
foreach($var as $value)
if(1 + 1 == 2)
$arr[] = $value;
Run Code Online (Sandbox Code Playgroud)
至少我再次省略了结束分号并且(正如预期的那样)发生了解析错误.
所以我的大问题是:我什么时候可以省略花括号和结构/循环/函数?我知道,我可以肯定地在这样做if和else.可是你知道while,for和foreach?
是的,我知道这是不是安全,智能,无论到代码,而无需花括号,并有像速记$condition ? true : false;和if: doSomething(); endif;,endfor;和endforeach;.我不想了解shorthands我只想了解有关何时何地可以省略大括号的条件.
当我开始开发时,我遵循了总是使用{}(花括号)来封闭块的教程.但是,当我开始查看其他人的代码(例如GitHub上的类,或者通常只是基本教程所显示的代码)时,我也看到了块语句而没有被包含在内{},例如;
if($var < 15)
$string = 'Hello, Jimmy!';
elseif($var >= 15)
$string = 'Hello, Anne!';
Run Code Online (Sandbox Code Playgroud)
是相同的
if($var < 15) {
$string = 'Hello, Jimmy!';
} elseif($var >= 15) {
$string = 'Hello, Anne!';
}
Run Code Online (Sandbox Code Playgroud)
我从来没有使用过没有封闭的块{},但是我今天使用它们并且我开始看到这样做的效率(它看起来也很清晰,因为我经常发现我的功能充满了{}循环,条件等等) .
我问的是;
a)没有花括号的块有任何限制(;我注意到在输入单行后我的IDE从缩进中退回并在if()条件后返回?
b)在不使用时,是否有最佳实践{}?
任何答案,特别是那些公司.关于块大括号使用惯例的背景/文档与不使用它们将非常感激,因为我真的想了解花括号的用法:)!
可能的重复:
参考 - 这个符号在PHP中意味着什么?
要三元还是不三元?
有人可以解释优点/缺点或使用三元运算符而不是if/else语句.我应该在何时何地使用?