2012-05-29 108 views
0

我有一个名为myArr的数组。它包含字符串和整数,例如PHP:如果语句返回True而不是False

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

您如何知道它返回true,'$ num'是否等于10? –

+0

@rudi_visser:我在调试模式下运行代码。所以,我可以看到$ num在每次迭代中都在增加。另外,我可以看到光标在循环中。 – Gusgus

+0

在哪里宣布$ j? – codingbiz

回答

5

为了满足平等,你有两个选择:

if ('0' == 'tr')

OR

if (0 === 'tr')

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

我还发现这有助于您from the PHP manual

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

8

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

请参阅this demo以显示if语句为何评估为true

-2

任何字符串比0当一个字符串比较整数,字符串会自动转换成整数,并在你的情况下,字符串没有数字那么它会进行评估,以零领先它的真实

+2

只有当它没有数字。 –

相关问题