PHP:如果语句问题


PHP: If statement issue

数组resAlloc包含 10 列和 5 行。所有条目都等于 0。所以,我希望以下 IF 语句是真的,但由于某种原因它是错误的......为什么?

if ($resAlloc[$i][$j] != 'ts' && $resAlloc[$i][$j] != 't' && $resAlloc[$i][$j] != 'st') {
    $count++;
}
!=评估

0false。使用更严格的!==

IIRC 任何等于 0 和 != 的东西都将返回 FALSE。

问题是你正在比较一个字符串和一个整数,而 PHP "有用地"将字符串转换为一个整数 - 整数零。 0!='ts'的计算结果为 false ,因为它在转换后最终进行的比较是0!=0 。您可以通过将数组的内容显式视为字符串来防止这种情况:

strval($resAlloc[$i][$j]) != 'ts'

这将执行比较'0'!='ts',正确计算为 true 。如果你传递一个字符串,它会原封不动地返回它,所以无论你的数组中有什么,这都应该是安全的。

或者,正如 Samy Dindane 所说,你可以只使用 !==,它不会进行任何类型转换。