如何最好地与PHP中的0进行比较?

nic*_*ckf 13 php mysql comparison

在我正在处理的一段代码中,我需要从数据库中提取一个值并检查它是否存在0.最初,我写的是:

if ($myVal == 0) { ...
Run Code Online (Sandbox Code Playgroud)

但是当我今天再看一遍时,我发现了一个错误:

var_dump("foo" == 0);  // bool(true)

// and while we're here...
var_dump(intval("foo")); // int(0)
Run Code Online (Sandbox Code Playgroud)

由于这个值来自数据库,这通常意味着它将是一个字符串,所以我想我可以这样做:

if ($myVal === "0")
Run Code Online (Sandbox Code Playgroud)

但它似乎反直觉,因为我实际上想要处理一个整数,这似乎表明我们正在使用字符串.(我希望这对你有意义.)另外,在给定字段类型的情况下,任何给定的DB访问器都会将值转换为适当的类型也不应出乎意料.

当它可能是字符串或int时,您使用什么方法来检查值0?

cle*_*tus 20

精简版:

if ("$myVal" === '0')
Run Code Online (Sandbox Code Playgroud)

要么

if (strval($myVal) === '0')
Run Code Online (Sandbox Code Playgroud)

长版:

if ($myVal === 0 || $myVal === '0')
Run Code Online (Sandbox Code Playgroud)