0

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

0  st ts 0  0
st 0  0  0  0

为了调试 php 脚本,我使用 Zend Studio。调试窗口说 acell [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 在每次迭代中都在增加。另外,我可以看到光标进入循环

4

3 回答 3

8

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

请参阅此演示以说明 if 语句评估为true.

于 2012-05-29T22:37:27.417 回答
5

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

if ('0' == 'tr')

或者

if (0 === 'tr')

=== 表示检查 value 和type

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

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

于 2012-05-29T22:39:44.173 回答
-2

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

于 2012-05-29T22:39:43.937 回答