@(小乖)今天再读php文档,看到逻辑运算符这边又发现了新天地呀,
之前在探究c语言的逻辑运算符中,我们得到了一些结论
而在php中,&& ||与and or 同时存在,并且表示的含义是一样,但是不同的是 优先级
接下来复制官方文档的一个实例
<?php // -------------------- // foo() 根本没机会被调用,被运算符“短路”了 $a = (false && foo()); $b = (true || foo()); $c = (false and foo()); $d = (true or foo()); // -------------------- // "||" 比 "or" 的优先级高 // 表达式 (false || true) 的结果被赋给 $e // 等同于:($e = (false || true)) $e = false || true; // 常量 false 被赋给 $f,true 被忽略 // 等同于:(($f = false) or true) $f = false or true; var_dump($e, $f); // -------------------- // "&&" 比 "and" 的优先级高 // 表达式 (true && false) 的结果被赋给 $g // 等同于:($g = (true && false)) $g = true && false; // 常量 true 被赋给 $h,false 被忽略 // 等同于:(($h = true) and false) $h = true and false; var_dump($g, $h); ?> bool(true) bool(false) bool(false) bool(true)
**简单的来说,优先级 "||" > '='> "or"
"&&" > '='> "and"**
但是无论如何php与c一样,并没有js般的逻辑运算符作用
and or 与=共存时,只获取and和or的前面的值,可能用true和fasle还不够形象
接下来我们用具体的值,就取数字来研究
$a = 2 && 3;//$a = 2 && 3; 同 echo $a;
答案是:
此处内容需要评论回复后方可阅读。
那么你就会问了,那and 和or ,前面我们说它跟等号一起,实际就会截取and 和or 前面地值
$c = 2 and 3; echo $c; //2 $d = 2 or 3; echo $d;//2
因此这种形式下往往用来混淆加密,and 和 or 只是减弱了代码地可读性,论如何写出他人维护不了的代码 --@(捂嘴笑)
好,如果你觉得脑子还没有乱的话,继续接着看@(茶杯)
那么如果没有等号,and 和or ,&& ,||又怎么样呢?
echo 2 && 3; echo 2 || 3; echo 2 and 3; echo 2 or 3;
结果都是1,也就是说:
&& 和 ||作用不言而喻,就是没有js那样的作用,and 和 or 也是,但是没有等号的存在,and 和 or 就要比较下两边的bool了(同样,非0为真
总结,看完了文章,你只要记住
- 没有js那样的作用
- 有等号在的and or 就取and 和 or 前面的值
- && 和 || 与没有等号的and or 一样,返回true 还是false
增加
$stmt = false or die ("Failed to prepared the statement!");
这种情况会输出Failed to prepared the statement!
这是为什么呢?
这是die的作用,看到false,就输出证明死了