php判断$1 or $j and $z 顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php判断$1 or $j and $z 顺序相关的知识,希望对你有一定的参考价值。

php
$1 or $j and $z
这样的判断 运算完or之后就不在进行判断了么?只进行一次判断么?

写法有问题? or 和 and 是逻辑运算, 每个都是从左到右
但是 and优先级更高哦
你要写成( $i or $j) and $z

假设 三个变量都是boolen类型

还可以试试 | 和 & 位移运算符 这个也是 & 比 | 优先

$i | $j & $z

也是支持的
另外
and 可以写成 &&
or 可以写成 ||

这种形式 的运算优先级比 and or 这种高一级

逻辑运算 级比 位运运算优先级低,逻辑运算的优先级 几乎是最低的。

$1 可以这种变量?????? 你这个应该是 $i吧追问

||和or不都是或么?他们级别不同么?是$i

追答

|| 优先级比 or高, 比 and 还高

位运算 高于逻辑运算

逻辑运算中 &&写法 高于 and 写法

and or写法优先级是最最最低的 ,除了引号。就是and or 这种最低

无论是 位运算、逻辑运算符号, and(与运算) 优先级最高

追问

无论是 位运算、逻辑运算符号, and(与运算) 优先级最高?

无论是 位运算、逻辑运算符号, and(与运算) 优先级最高?

追答

同种运算混合中,  and(与运算) 优先级最高

官方php手册

追问

$i为真
$j为真
$z为假
if($i or $j and $z) 和 if($i || $j and $z)这两个的区别,我不太明白他们的运算顺序

追答

前者,先算 $j and $z 然后的结果 再 or $i

后者 先算 $i or $j 然后的结果 再 $z

和小学四则混合运算一个道理, 类似 先乘除后加减

建议,不要混合 逻辑运算的两种写法,你自己会乱的

建议用 括号表示优先级就好了

非要从左到右的话 你可以写成 ($i or $j) and $z

$i = $j = true;
$z = false;

var_dump(($i or $j) and $z) ;////// 输出为 false;
var_dump($i or $j and $z) ;////// 输出为 true;

参考技术A $i还是$1?
不是的,判断是进行了两次,不过&&的优先级要高于||,所以是从后往前运算,如果你想要从前往后,那么前面就要加上括号追问

是$i if($i or $j and $z) 和 if($i || $j and $z)这两个的区别,我不太明白他们的运算顺序

追答

你写的两个不都是一样的吗?

and 和 &&是一个意思 or和||也是一个意思,具体的顺序可能要参考一下手册,不过运算顺序没有必要去记,程序员一般都是给自己需要优先运算的东西加上括号

Python中 and or 运算顺序详解 --- 短路逻辑

核心思想

表达式从左至右运算,若 or 的左侧逻辑值为 True ,则短路 or 后所有的表达式(不管是 and 还是 or),直接输出 or 左侧表达式 。

表达式从左至右运算,若 and 的左侧逻辑值为 False ,则短路其后所有 and 表达式,直到有 or 出现,输出 and 左侧表达式到 or 的左侧,参与接下来的逻辑运算。

若 or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑。

 

 

详情参见:http://www.cnblogs.com/an9wer/p/5475551.html

 

以上是关于php判断$1 or $j and $z 顺序的主要内容,如果未能解决你的问题,请参考以下文章

PHP判断语句,and和or的使用

ASP(SQL)中的“and”与“or”的先后顺序

thinkphp <if> 标签比较中的 或者 用 OR ,那么 且 是否用 AND 或者是啥?

逻辑判断

NGINX实现IF语句里的AND,OR多重判断

逻辑判断 ,运算