我有一个PHP函数,它返回一个可以为零或更大的数字.例如:
public function returnVal($val1, $val2) {
if ($val2 > $val1) return $val2 - $val1;
else return false;
}
Run Code Online (Sandbox Code Playgroud)
这被用作:
if ($diff = $this->returnVal($a, $b)) // do something
else // don't
Run Code Online (Sandbox Code Playgroud)
然而,当差异为零时,我仍然喜欢它做某事,但它似乎将零检测为假而不是零.我仍然需要知道什么时候它是假的.
我尝试将其更改为:
if (($val2 - $val1) == 0) return 'zero';
if ($val2 > $val1) return $val2 - $val1;
else return false;
Run Code Online (Sandbox Code Playgroud)
哪个确实有效,但似乎有点不雅 - 当然必须有更好的方法?
谢谢
随着if语句里面的变量赋值快捷,PHP采用松散型的比较和类型种子队之类的东西0,null和其他假y值来false.您必须使用显式===和!==比较来确保比较具有完全相同的类型(没有类型 - 玩杂耍):
$diff = $this->returnVal($a, $b);
if ($diff !== false) // do something
else // don't
Run Code Online (Sandbox Code Playgroud)
看到此参考用于所有的从使用简单的可能发生的比较条件==,=或!=比较.
@MrLlama的替代方案:
if (($diff = $this->returnVal($a, $b)) !== false) // do something
else // don't
Run Code Online (Sandbox Code Playgroud)