逻辑运算符
概念:对表达式进行逻辑运算,运算出的结果是布尔类型的值。
要求:参与逻辑运算的表达式的值必须是布尔类型的值,如果不是布尔类型,PHP会自动转换成布尔类型的值,然后再参与运算
以下值被认为是false 其他的都是true
1)布尔值false
2)整数 0
3)浮点型 0.0
4)空白字符串(不包含空格 和 回车符) 和 字符串0
5)没有成员的数组
6)NULL
//小技巧 通过强制转换 来查看一个值转成布尔值后是真还是假
var_dump((bool)1);//通过强制转换来查看 转成布尔类型后的值
1)逻辑与 and &&
两边都为真,运算的结果就是真
有一个为假,运算结果就为假
$a = true; $b = true; var_dump($a && $b); //返回结果true
$a = true; $b = false; var_dump($a && $b); //返回结果false
中间隐含一个问题 “短路”
2)逻辑或 or ||
两边有一个为真,运算结果就为真
两边都为假的,运算结果才是假
$a = true; $b = false; var_dump($a || $b);//返回结果true
3)逻辑异或
两边的值不一样 为真
两边的值一样 为假
$a = true; $b = true; var_dump($a xor $b);//打印:false $c = true; $d = false; var_dump($c xor $d);//打印结果:true
4)逻辑非 !
将原来表达式的值否定掉
原来是true,结果就是false
原来是false,结果就是true
$a = true; var_dump(!$a);//打印:false
短路问题
$a = false; $b = 1; $a && ++$b;//++$b被短路了 //前面$a已经是false了,后面的不重要了,就不执行了 echo $b;//打印结果 1;
我们的程序语言的设计者认为:
只要有逻辑运算符 (逻辑与,逻辑或)那么运算结果就是就是一个true或者false
那个这个整个运行的过程就不重要了!
当然短路问题并不会遇到太多,就算遇到也不会有什么影响!