使用`!`时php中的意外输出

时间:2013-10-24 05:47:59

标签: php

我只是尝试了一个小程序,但我得到了意想不到的输出。

for($i=20;!$i<20;$i--)
echo '*';

预期输出为*,仅适用于$i=20为假的第一种情况,因此!$i<20应返回true,但执行时间循环的次数等于{{1}的值}}

我尝试操纵值并在我将$i的值设置为负值时得出结论,循环变得无限。

我还试过这个

$i

输出没有达到预期的效果 那么

echo 20<20;

按预期输出echo !20<20;

现在尝试的时候:

1

它返回1但我正在尝试

19<20

它正在返回!19<20 为什么会这样? 我在WAMP服务器和我的PHP版本1

上运行PHP

注意:我对for循环没有任何问题我可以处理它所以请不要回答纠正我的循环而不是我对5.5.0的工作感到困惑所以请回答它

2 个答案:

答案 0 :(得分:1)

你需要括号“不”正确的部分:

for($i=20;!($i<20);$i--)
  echo '*';

!20<20的示例执行此操作:

!20<20
!(true)<20  <- converts the type to bool so we can negate
false<20    <- negates the true to false
0<20        <- converts the false to an int to compare
true

!19<20的例子就是这样做的:

!19<20
!(true)<20  <- converts the type to bool so we can negate
false<20    <- negates the true to false
0<20        <- converts the false to an int to compare
true

答案 1 :(得分:0)

尝试

for($i=20;!($i<20);$i--)
echo '*';

问题是'!$ i'先执行然后'&lt;'操作员工作。