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));