PHP中的运算符 and 与 &&,or 与 || 的区别以及优先级顺序

2018-03-03 建站知识 浏览 手机预览
文章来源:http://www.imtr.cn/html/n188.html

我原来以为PHP中的and和&&是一样的, 只是写法上为了可读性和美观, 事实上我错了。

PHP中的逻辑“与”运算有两种形式:and 和 &&,同样“或”运算也有 or 和 || 两种形式。

如果是单独两个表达式参加的运算,两种形式的结果完全相同,例如 $a and $b和$a && $b没有任何区别。

同样的$a or $b和$a || $b也完全一样。

但两种形式的逻辑运算符优先级不同,这四个符号的优先允许从高到低是:&&、||、and、or。

举例:

$a || $b and $c || $d
//相当于
($a || $b) and ($c || $d)


在先贴一张PHP文档中的一张图例


通过上面的图例很容易看出来,一些运算符虽然作用一致,但是其优先级不同,而这需要严格的注意,不能有丝毫马虎。

以逻辑运算符 && 、AND 、|| 、OR为例, 他们在一定的条件下,取得的结果一致,但不同的使用方法,可能会对你的程序开发造成困扰:

1. 以 OR 为例:

$a = 3 or 1;
var_dump($a);

输出:int(3)


2. 以 || 为例:

$a = 3 || 1;
var_dump($a);

输出:bool(true)


3. 若将例1 中 逻辑运算操作以 小括号 括起,则会出现例2 同样的结果,示例如下:

$a = (3 OR 1);
var_dump($a);

输出: bool(true)


上面的例子应该是运算符差异性的代表性的例子了。这点东西虽小,但还是应该注意,除非有特别的需求。

原文地址:http://www.imtr.cn/html/n188.html
  • 如果你的问题还没有解决,可以点击页面右侧的“ ”,站长收到问题后会尽快回复解决方案到你的邮箱。
  • 创造始于问题,有了问题才会思考,有了思考,才有解决问题的方法,才有找到独立思路的可能。 —— 陶行知