我正在做一些卷曲工作,直到我碰到一个有趣的if语句。认为它永远不会执行if语句,令我惊讶的是它确实如此。这是如何执行的?
<?php
while (6 && 2 == 2) {
$test = "How the hell?!!?";
}
?>
我认为它有效的唯一原因是6评估为真,2等于2,这是真的。我这个想法是否正确?最初我以为它无法执行,因为6显然不等于2。
答案 0 :(得分:2)
你是对的。对于执行子语句(6,&amp;,2,==,2)的顺序,请参阅http://php.net/manual/en/language.operators.precedence.php。
所以评价为(6) && ((2) == (2))
。 6
,转换为布尔值为true。而且2 == 2
也是。什么导致true && true
什么是自然true
。
答案 1 :(得分:1)
正确。你的表达式有两个部分6和2 == 2。两者都是真的如此真实&amp;&amp;真的当然是真的。请看operator precedence。
答案 2 :(得分:1)
我没有任何PHP经验,但我会拍摄。 进行逻辑比较时,将返回一个值,具体取决于每一侧的值。例如,在C ++中,您有两种可能的比较结果:0和1. 0代表'false',而1和任何其他数字代表'true'。因此,在您的代码中,您获得的值为6(不为0,如此为真),值为1(因为2等于2)。