Php 具有多个逻辑运算符(AND、OR)的嵌套IF条件

Php 具有多个逻辑运算符(AND、OR)的嵌套IF条件,php,if-statement,optimization,logical-operators,Php,If Statement,Optimization,Logical Operators,这是我关于stackoverflow的第一个问题,希望除了我之外,还有人需要这种类型的代码 我编写的代码运行良好,但我想知道如何改进它,或者是否有更好的方法来实现相同的结果 // Do NOT include files for '404' and pages 'abc' or 'def' with slug '123' if ( $pageName !== '404' ) { if (( $pageName == 'abc' ) && ( $pageSlug

这是我关于stackoverflow的第一个问题,希望除了我之外,还有人需要这种类型的代码

我编写的代码运行良好,但我想知道如何改进它,或者是否有更好的方法来实现相同的结果

// Do NOT include files for '404' and pages 'abc' or 'def' with slug '123'
if (  $pageName !== '404'  ) 
{ 

    if (( $pageName == 'abc' ) && ( $pageSlug == '123' ) 
             OR ( $pageName == 'def' ) && ( $pageSlug == '123' )) {

        return NULL;

    }

    else {

        // include file
        require_once ( '/file.php' );

        // Do NOT include for page 'def'
        if ( $pageName !== 'def' ) {

            // include file
            require_once ( file_2.php' );

        }

    }

};

由于您已经在一个函数中,您可以通过404立即返回来减少一些嵌套。此外,由于“return NULL”,因此不需要使用else,我认为将if或分成2个if会使其更具可读性:

function your_func_name($pageName, $pageSlug) {
   if ( $pageName == '404' ) {
       return;
   }

   if ( $pageName == 'abc' && $pageSlug == '123' ) {
      return NULL;
   }

   if ( $pageName == 'def' && $pageSlug == '123' ) {
      return NULL;
   }

   // include file
   require_once ( '/file.php' );

   // Do NOT include for page 'def'
   if ( $pageName !== 'def' ) {
      // include file
      require_once ( 'file_2.php' );
   }
}

因为代码可以工作,所以它不属于这里。你应该在代码审阅时发布。你可以做一个小小的简化:
if(($pageName=='abc'| |$pageName=='def')&&$pageSlug=='123')
。正如您所知,
&&
优先于
| |
,因此您可以使用括号来覆盖它。感谢您的简化。代码更易于阅读。