Php 这是如何触发的?

Php 这是如何触发的?,php,if-statement,logic,Php,If Statement,Logic,我正在做一些卷曲的工作,直到我碰到一个有趣的if语句。我认为它永远不会执行if语句,但令我惊讶的是它确实执行了。这是如何执行的 <?php while (6 && 2 == 2) { $test = "How the hell?!!?"; } ?> 我认为它有效的唯一原因是6的值为真,2等于2,这是真的。我的想法正确吗?最初我认为它不能执行,因为6显然不等于2。你是对的。有关子语句(6,&&,2,==,2)的执行顺序,

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

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

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

}
 ?>


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

你是对的。有关子语句(6,&&,2,==,2)的执行顺序,请参阅


所以它的计算结果是
(6)&((2)==(2))
<代码>6,强制转换为布尔值为真。还有
2==2
。什么导致了
true&&true
什么是自然的
true

正确。表达式有两部分6和2==2。这两个都是真的,所以真的&真的当然是真的。看看。

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

可能重复的
=
的优先级高于
&&&
,因此这实际上是
,而(6&&true)
,始终是真的。您看过了吗?(是的,你的猜测是正确的:
6&&2==2
=
6&&2
=
6&&true
=
truthy&&true
=
true
=
true
。投票抵消了一些仇恨。我的意思是,你实际上问了一个编程问题,但显然对一些人来说还不够好:)谢谢,对不起,我忘了检查相同的问题,我只是想直接回答我的例子。再次谢谢你。我一从商店回来买生日卡,就会把这个标记为正确的。