Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php OR运算符会导致两种不同的行为_Php - Fatal编程技术网

Php OR运算符会导致两种不同的行为

Php OR运算符会导致两种不同的行为,php,Php,我无法理解为什么包含相同值的两个条件不会两次返回相同的结果 看看可变内容: $quantity = 1; var_dump(!$cart = true); var_dump(!$product = false); var_dump($quantity <= 0); -------- Output : bool(false) bool(true) bool(false) 为什么??我希望这是TRUE var_dump(false || true || false); ---------

我无法理解为什么包含相同值的两个条件不会两次返回相同的结果

看看可变内容:

$quantity = 1;
var_dump(!$cart = true);
var_dump(!$product = false);
var_dump($quantity <= 0);
--------
Output : bool(false) bool(true) bool(false) 
为什么??我希望这是
TRUE

var_dump(false || true || false);
---------
Output : bool(true)
为什么下面的条件与我期望的完全相同:
TRUE

var_dump(false || true || false);
---------
Output : bool(true)
编辑

我知道
=
是用于分配的。 但这样做:

if(!$var = null){
  // $var is not empty
}

是一种分配值并同时检查该值是否为
null | false | empty | array empty…
的方法。

这是关于运算符优先级和关联性的

var_dump(!$cart = true || !$product = false || $quantity <= 0);

var\u转储(!$cart=true | |!$product=false | |$quantity
=
是赋值,请使用
=
==
检查是否相等。我知道…但是如果将null指定为值,则此表达式的结果返回false。赋值的运算符优先级与比较不同,即低于
运算符r、 不,在该代码段中,
$var
仍然为空,您可以使用
var\u dump
检查它。您将输入条件,因为,
null
是一个假y值,您正在对其求反。如果
null
是一个具有非空值的变量,它将不会输入条件,因为它将计算为
If(false)
。好的,我现在明白了……这是我犯的一个非常愚蠢的错误。所以我必须做
var_dump((!$cart=true)|(!$product=null)|($quantity
var_dump(!$cart = (true || !$product = false || $quantity <= 0));