我有一个名为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 :(得分: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相比都是真的