在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
追溯代码时遇到这个坑,一直是略有懵懂,那就填了这个坑. 1 if ( ! defined('ENVIRONMENT') OR ! file_exists($file_path = BASEPATH.'config/'.ENVIRONMENT.'/database.php')
一 语法 逻辑运算符.
表面看两组操作符没有差异.但是 The reason for the two different variations of "and" and "or" operators is that they operate at different precedences. (See Operator Precedence.) 就是优先级不同啦;查优先级表看下,
排序 && > || > = > and > or . 充电完毕; 二 例子 3 $a1 = true; 4 $a2 = false; 5 6 $b1 = true; 7 $b2 = false; 8 9 var_dump($a1 AND $a2); //false 10 var_dump($a1 && $a2); //false 11 12 var_dump($a1 OR $a2); //true 13 var_dump($a1 || $a2); //true 跟预想的一样.那么坑在哪里 1 $a = $a1 OR $a2; //true 2 $a = $a2 OR $a1; //false 坑1 3 $a = $a1 || $a2; //true 4 5 $b = $b1 AND $b2; //true 6 $b = $b2 AND $b1; //false 坑2 7 $b = $b1 && $b2; //false
三 回到咱们的代码里 1 if ( ! defined('ENVIRONMENT') OR ! file_exists($file_path = BASEPATH.'config/'.ENVIRONMENT.'/database.php') '=' 在file_exists()的括号内,绝对没有其他'=' 来扰乱判断结果.那么关注点就是短路了. 短路:在OR逻辑中,有1个为true,则结果为true,另外一个不再进行运算.
1 短路运用 2 defined('ENV') or die('env not defined!'); 3 defined('ENV') or define('ENV','DEVELOP'); AND 理论上没有短路,因为需要至少两个条件都为真,才成立. 后面的条件是判断的一部分,不能作为短路语句使用了.
1 举例: 2 $a = 0; 3 $b = 0; 4 if ($a =4 || $b =5){ 5 echo $a,$b; 6 } 因为 || 优先级大于 = ,计算顺序如下
思考: 我理解中,计算完第一步之后,条件expr 变为 $a = true = 5 ,这毫无疑问是一个syntax error ,怎么可以正常的做为判断条件了呢? 看到的各位不妨探讨下. |
2022-08-30
2022-08-17
2022-11-06
2022-08-15
2022-08-18
请发表评论