PHP:if 语句返回 True 而不是 False


PHP: If statement returns True instead of False

我有一个名为 myArr 的数组。它包含字符串和整数,例如

0  st ts 0  0
st 0  0  0  0

为了调试php脚本,我使用的是Zend Studio。调试窗口显示cell [0][0]包含 int 0。但问题是 IF 语句返回 TRUE。

        for ($i = 0; $i < $rows; $i++) {
          for ($j = 0; $j < $cols; $j++) {
            if ($myArr[$i][$j] == 'ts' || $myArr[$i][$j] == 'st') {
                $num++;
            }
          }
        }

更新:我正在Zend Studio的调试模式下运行代码。因此,我可以看到$num在每次迭代中都在增加。另外,我可以看到光标进入循环

因为0 == 'ts'true .您需要使用相等比较===。否则,PHP 的类型杂耍会导致此语句的计算结果为 true

请参阅此演示以说明为什么 if 语句的计算结果为 true

当字符串与整数进行比较时,字符串将自动转换为整数,在您的情况下,字符串没有数字,因此它将被计算为零导致满足相等性,您有两个选择:


if ('0' == 'tr')


if (0 === 'tr')

是 === 表示检查值和类型

我还从PHP手册中发现这对您很有帮助:

该值由字符串的初始部分给出。如果字符串以有效的数值数据开头,则这将是使用的值。 否则,该值将为 0(零)

任何字符串与 0 相比都是真的