Koy*_*Cho 3 php boolean operator-precedence
我读到它=
的优先级高于and
让我们说你得到了
$boolone = true;
$booltwo= false;
$res = $boolone and $booltwo;
Run Code Online (Sandbox Code Playgroud)
我猜这会变成虚假,因为$res = true and false真假都等于假.但由于=具有更高的优先权,它应该变为现实.这是这样的
($res = $boolone) and $booltwo;
Run Code Online (Sandbox Code Playgroud)
这返回true,但我的问题是为什么它返回true,不应该返回false?因为默认情况下为$res = $booloneequals true并且$booltwo为false,所以我们有:true and false通常应返回false,但为什么是真的呢?
简单地说:
($res = $boolone) and $booltwo;
(true) and false; //returns true?
Run Code Online (Sandbox Code Playgroud)
你是对的
$res = $boolone and $booltwo;
Run Code Online (Sandbox Code Playgroud)
相当于
($res = $boolone) and $booltwo;
Run Code Online (Sandbox Code Playgroud)
由于运营商的优先权,
$res = $boolone
Run Code Online (Sandbox Code Playgroud)
首先评估,$boolone分配给$res.... 的值
$booltwo然后and使用第一个评估结果(true and false)的结果编辑,但是您对该评估没有任何作用,因此它被简单地丢弃......它没有被分配给$res,因为该分配已经由第一次评估完成.
如果你这样做
var_dump($res = $boolone and $booltwo);
Run Code Online (Sandbox Code Playgroud)
然后你会看到被丢弃的完整评估的结果,并且$res仍然是true