浅谈php中&&/and、||/or中的坑

在逻辑运算符中,提到与和或,我们可能立刻想到的是&&、||,在php中还有and、or.然而and和or中有一个小小的坑,请看下面这段代码:

<?php

	$a = true;
	$b = false;

	$c1 = $a && $b;
	var_dump($c1); //1.false

	$c2 = $a and $b;
	var_dump($c2); //2.true

	$c3 = $b and $a;
	var_dump($c3); //3.false

	$c4 = $a or $b;
	var_dump($c4); //true
	
	$c5 = $b or $a;
	var_dump($c5); //false
?>

1处打印的结果为false不用多讲,2处打印的是true可能让我们困惑,当你看到3处打印的结果后可能更加困惑,哈哈
出现这种现象的原因在于优先级,and 、or的优先级很低,比=号还低,拿2来说:
由于and的优先级低于=,那么
$c2 = $a and $b; 等价于 ($c2 = $a) and $b;
$c2先是被赋值为true,然后和$b进行或运算,由于$c2 和$b进行或运算的结果并没有赋值给其他变量,所以运算的结果并没有保存下来,所以整个表达式运算的结果仍是true。
我们在使用逻辑运算符and、or时应小心其优先级,否则可能会出现错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值