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

时间:2012-05-29 22:33:17

标签: php arrays

我有一个名为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在每次迭代中都在增加。此外,我可以看到光标进入循环

3 个答案:

答案 0 :(得分:8)

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

请参阅this demo,了解if语句评估true的原因。

答案 1 :(得分:5)

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

if ('0' == 'tr')


if (0 === 'tr')

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

我也发现这对你有用from the PHP manual

  

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

答案 2 :(得分:-2)

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