在 PHP 中的数组元素之间应用逻辑运算符

tes*_* qa 2 php arrays recursion logical-operators

我有一个三个array,第一个是包含所有布尔值的布尔数组,第二个是条件数组,其中包含布尔数组之间的和/或操作,第三个是路由页面数组,如果表达式为 true 那么它就是重定向到下一个路由页面,否则不是数组

array(2) { [0]=> bool(true) [1]=> bool(false) ...} // boolean array
array(2) { [0]=> string(2) "or" [1]=> string(0) "" ...} // conditional operator array
array(2) { [0]=> string(1) "2" [1]=> string(1) "2" ... } // route page 
Run Code Online (Sandbox Code Playgroud)

将生成表达式(bool(true) or bool(false)),因此结果将是bool(true)最终的,因此它将重定向到第二页,即我需要循环中的递归表达式

这是我应用的代码

 for($i=0;$i<count($boolean);$i++)
           {
               if($and_or[$i]=='and')
               {
                   $operator='&&';
               }
               else
               {
                   $operator='||';
               }
               $result=($boolean[$i].$operator.$boolean[$i+1]);

           }
           var_dump($result);
Run Code Online (Sandbox Code Playgroud)

GGe*_*ets 5

由于我不喜欢建议答案的复杂性,因此我进行了更深入的研究,最终扫描了http://php.net/manual/en/ref.array.php中列出的数组函数。

这些可能不是最好的性能,但很简单,如果您不应用于大型数组,我不会考虑性能损失。

对于逻辑AND ( && ),请使用以下命令:

var_export(!in_array(false,array(true,true,false,false,true,false))); //false
Run Code Online (Sandbox Code Playgroud)

或这个:

var_export((bool)array_product(array(true,true,false,false,true,false))); //false
Run Code Online (Sandbox Code Playgroud)

对于逻辑( || ),请使用以下命令:

var_export(in_array(true,array(true,true,false,false,true,false))); //true
Run Code Online (Sandbox Code Playgroud)

或这个:

var_export(array_search(true,array(true,true,false,false,true,false))!==false); //true
Run Code Online (Sandbox Code Playgroud)

我大胆猜测 in_array更快。但随着 PHP 7 的推出,谁知道呢......