-1

我只是在做一些 curl 的工作,直到我遇到了一个有趣的 if 语句。认为它永远不会执行 if 语句,令我惊讶的是它确实执行了。这是如何执行的?

   <?php      
     while (6 && 2 == 2) {

     $test = "How the hell?!!?";

}
 ?>

我认为它有效的唯一原因是 6 评估为真,2 等于 2,这是真的。我的这种想法正确吗?最初我认为它无法执行,因为 6 显然不等于 2。

4

3 回答 3

2

你是对的。有关子语句(6、&&、2、==、2)的执行顺序,请参见http://php.net/manual/en/language.operators.precedence.php

所以它被评估为(6) && ((2) == (2))6,转换为布尔值是真的。而且2 == 2也是。什么结果就true && true什么自然true

于 2013-04-25T17:55:21.647 回答
1

我没有任何 PHP 经验,但我会尝试。在进行逻辑比较时,会有一个返回值,具体取决于两边的值。例如,在 C++ 中,比较有两种可能的结果:0 和 1。0 代表“假”,而 1 和任何其他数字代表“真”。因此,在您的代码中,您会得到一个值为 6(不是 0,所以为真)和一个值为 1(因为 2 等于 2)的值。

于 2013-04-25T17:58:41.423 回答
1

正确的。您的表达式有两个部分 6 和 2==2。两者都是真的,所以真的 && true 当然是真的。查看运算符优先级

于 2013-04-25T17:55:58.743 回答