首先看一段代码:
<?php $test="李四"; $test=="张三"&&$test="张三来了"; echo $test; //输出“李四” $test="李四"; $test=="张三"||$test="张三不在这里"; echo $test; //输出“张三不在这里” ?>
为什么会产生这样的结果呢?如果按照平常的方法,我们最少要用个IF语句来判断。可现在只是两个逻辑运算就会把变量的值给改变了。下面我们来分析一下它的运行原理。
在参与逻辑运算的两边表达式中,是按照从左到右顺序进行运算的。而“与”运算中只要有一个是假,整个表达式的结果为假。所以,当左边表达式为假时,就无 需再进行运算了。这样的处理无疑对程序的运行效率是大有好处的。所以说正如题目所说,是一种高效的用法。而逻辑或就不同了:只要一个为真那整个表达式就为 真。所以,在左边为假的情况下,还要运行右边的表达式判断。明白或理解了上面所说,也就对结果不感到奇怪了。
上面的例子当然可以通过条件判断语句来实现,现在的情况一 个是减少了代码的量,最主要的是增加了程序的执行效率。掌握这一点的关键就是表达式的运行方向,是从左到右。当第一个值决定整个表达式的值时就会停止运行。值得说明的是右边可以是一个表达式,也可以是一个函数,但不能是一系列的语句组合或输出语句。毕竟它还是逻辑表达式的一个组成部分。
对于“与”(&&) 运算: x && y 当x为false时,直接跳过,不执行y;
对于“或”(||) 运算 : x||y 当x为true时,直接跳过,不执行y。
php中&和&&的异同
<?php $a=10; if($a>4 && (++$a>10)) { } //输出结果为11. echo $a; ?> <?php $a=10; if($a>4 and (++$a>10)) { } //输出结果为11. echo $a; ?> ************************************************************** <?php $a=10; if($a>4 && (++$a<10)) { } //输出结果为11. echo $a; ?> <?php $a=10; if($a>4 & (++$a<10)) { } //输出结果为11. echo $a; ?> ********************************************************* <?php $a=10; if($a<4 && (++$a>10)) { } //输出结果为10. echo $a; ?> <?php $a=10; if($a<4 & (++$a>10)) { } //输出结果为11. echo $a; ?> ******************************************************************* <?php $a=10; if($a<4 && (++$a<10)) { } //输出结果为10. echo $a; ?> <?php $a=10; if($a<4 & (++$a<10)) { } //输出结果为11. echo $a; ?> ******************************************************************* <?php // 下面的 sktest() 不被调用,原因是它们被运算符“短路”。 $a = (false && sktest()); $b = (true || sktest()); $c = (false and sktest()); $d = (true or sktest()); // "||" 的优先级比 "or" 高 $e = false || true; // $e 被赋值为 (false || true),结果为 true $f = false or true; // $f 被赋值为 false [Altair注:"=" 的优先级比 "or" 高] var_dump($e, $f); // "&&" 的优先级比 "and" 高 $g = true && false; // $g 被赋值为 (true && false),结果为 false $h = true and false; // $h 被赋值为 true [Altair注:"=" 的优先级比 "and" 高] var_dump($g, $h); ?>
以上就是php逻辑运算符&和&&以及&&和||的使用区别的详细内容,更多请关注二当家的素材网其它相关文章!
友情提示:垃圾评论一律封号 加我微信:826096331拉你进VIP群学习群