php中|| 不是真假为真么?

$b怎么会是9呢,不应该是7么?执行到第4行时 6 不是重新赋值给 $b了吗。后面的代码不应该是$a=true+1 $b=6+1 了吗?
最新回答
蔓草离离

2023-03-05 05:42:12

逻辑运算符是从左到右进行运算的。
对于逻辑或来说,只要左侧有一个子表达式为真,就不会再继续计算右侧剩余的表达式了(因为此时整个逻辑或表达式已经为真了)。
$a=3 赋值语句肯定为真,所以右边的$b=6压根就不会被执行。

逻辑与跟它类似,只要左边有一个子表达式为假,整个逻辑与表达式即为假,右边的表达式也不会再被运算。

这种现象常被称为逻辑短路,下面复制粘贴网上down下来的概念:
逻辑短路是对于逻辑运算而言,是指,仅计算逻辑表达式中的一部分便能确定结果,而不对整个表达式进行计算的现象。
对于“&&”运算符,当第一个操作数为false时,将不会判断第二个操作数,因为此时无论第二个操作数为何,最后的运算结果一定是false;
对于“||”运算符,当第一个操作数为true时,将不会判断第二个操作数,因为此时无论第二个操作数为何,最后的运算结果一定是true。
行雁书

2023-12-07 21:41:26

首先你的判断里,用的是赋值=,关系运算或||,因为a=3,判断为真,所以后面的判断就没有必要执行了,所以结果b=9
一念花开

2021-02-18 18:48:19

|| 运算符短路问题,
表达式A || 表达式B
当表达式A或者表达式B有一个为true时,整体运算结果为true,
但是如果||前面的表达式已经为true了,那么整体的逻辑运算结果就已经知道了,就是true,那么这个时候表达式B就不会执行了,被短路掉了
往事尾随而来

2023-03-29 08:07:23

文科高等数学吗?
假惺惺‘說爱

2021-02-06 02:02:40

这个主要是考察“||“也就是逻辑判断当中的“或“用法:
if($a=3 || $b=6)
$a=3 时为把3赋值给$a,$a=3返回为真,按照程序自左至右的执行方式,当左位为真时,“或“判断直接返回真,不再进行后续的判断。
所以$b = 8,后续执行 $b+=1 = 9
收起 2条折叠回答