我有一个PHP函数,它返回一个可以为零或更大的数字。例如:
public function returnVal($val1, $val2) {
if ($val2 > $val1) return $val2 - $val1;
else return false;
}
这被用作:
if ($diff = $this->returnVal($a, $b)) // do something
else // don't
然而,当差异为零时,我仍然喜欢它做某事,但它似乎是将零检测为假而不是零。我仍然需要知道什么时候它是假的。
我尝试将其更改为:
if (($val2 - $val1) == 0) return 'zero';
if ($val2 > $val1) return $val2 - $val1;
else return false;
哪种方法有效,但看起来有点不雅 - 当然必须有更好的方法?
由于
答案 0 :(得分:5)
使用if语句中的变量赋值快捷方式,PHP使用松散类型比较,并将0
,null
和其他false-y值等类型变为{{1} }。您必须使用明确的false
和===
比较来确保比较的类型完全相同(没有类型 - 玩杂耍):
!==
有关使用简单$diff = $this->returnVal($a, $b);
if ($diff !== false) // do something
else // don't
,==
或=
比较可能出现的所有比较条件,请参阅this reference。
来自@MrLlama的替代方案:
!=