PHP函数返回0 vs false

时间:2014-12-08 16:58:13

标签: php

我有一个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;

哪种方法有效,但看起来有点不雅 - 当然必须有更好的方法?

由于

1 个答案:

答案 0 :(得分:5)

使用if语句中的变量赋值快捷方式,PHP使用松散类型比较,并将0null和其他false-y值等类型变为{{1} }。您必须使用明确的false===比较来确保比较的类型完全相同(没有类型 - 玩杂耍):

!==

有关使用简单$diff = $this->returnVal($a, $b); if ($diff !== false) // do something else // don't ===比较可能出现的所有比较条件,请参阅this reference

来自@MrLlama的替代方案:

!=