PHP嵌套的else语句没有大括号

And*_*dre 0 php

我正在研究我继承的遗留代码,我遇到过这段代码.

  • 本规范有效!
  • 忽略变量名称看{第一个条件打开但是从不关闭其他没有打开?它仍然有效吗?
  • 它是继续在两个条件下还是仅在一个条件下继续?
  • 为什么它甚至有效?

    foreach($bla as $foo) { 
    
       if(condition) {
       if(condition) {
        // Do Something
       }else
         continue;
       }
    
    }
    
    Run Code Online (Sandbox Code Playgroud)

我的假设是内在条件将使用其他?但我只是假设因为这个答案:嵌套的if-else行为没有括号我找不到PHP的明确答案

Bli*_*itZ 6

您可以重新编写此代码(使用适当的缩进):

foreach($bla as $foo) {   // FOREACH
   if(condition) {        // IF#1
      if(condition) {     // IF#2
          // Do Something
      } else continue;    // END IF#2
   }                      // END IF#1
}                         // END FOREACH
Run Code Online (Sandbox Code Playgroud)

现在回答你的问题:

它是继续在两个条件下还是仅在一个条件下继续?

continue如果嵌套仅荷兰国际集团if()(IF#2)语句条件评价false.

为什么它甚至有效?

它的工作原理是因为允许语法没有括号用于简单操 参见手册中的示例1.所以嵌套完全由操作使用以下分隔符关闭.if() if()continue;