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)