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