与&;PHP中的and和and运算符

与&;PHP中的and和and运算符,php,Php,为什么这是正确的? $test=true和false 这不是吗? $test=(真与假) 使用&&运算符,它的计算结果都为false,这也是我使用and运算符所期望的结果。显然,它们是不可交换的,除了它们有不同的优先顺序之外。它们除了 &&=和在优先级表中,因此您的第一个示例相当于:($test=true)和false“&&&”的优先级高于“and” 打印false,true参见我在另一个问题中找到的答案:$test=true和false的计算结果不是true,而是false。但它将$test

为什么这是正确的?
$test=true和false

这不是吗?
$test=(真与假)


使用&&运算符,它的计算结果都为false,这也是我使用and运算符所期望的结果。显然,它们是不可交换的,除了它们有不同的优先顺序之外。

它们除了

&&
=
在优先级表中,因此您的第一个示例相当于:
($test=true)和false

“&&&”的优先级高于“and”



打印false,true参见我在另一个问题中找到的答案:
$test=true和false的计算结果不是true,而是false。但它将$test设置为真。完整语句的计算结果应为false,因为
$test=true
的计算结果应为true(并将$test设置为true),但剩余的`and false;`使语句的计算结果为false换句话说,
if($test=true和false){/*不应执行*/}
就像
if($test=(true和false)){/*不应执行*/}
。在这两种情况下,它们的评估都是错误的!这对于在没有父项的情况下在同一行中进行赋值和比较非常有用:
如果($a=true和$b)
true
赋值为
$a
,然后解析逻辑运算。如果表达式被求值为
true
,则可以在
If
块范围中使用
$a
的值。这相当于:
if($a=true)和&$b)
。简短而清晰的答案。这就是我们在堆栈溢出中需要的。
// The result of the expression (true && false) is assigned to $g
// Acts like: ($g = (true && false))
$g = true && false;

// The constant true is assigned to $h and then false is ignored
// Acts like: (($h = true) and false)
$h = true and false;

var_dump($g, $h);