我有一个整数/字符串变量。如果我在 mysqli 语句中有错误,它会变成String并且没有错误它会变成受影响的行数(Integer)。
但是在 PHP 中,如果我们有这样的东西:
$i = 0;
if ( $i < 0 || $i == null ) {
var_dump($i);
}
我们有这个结果:
int 0
首先,我想知道为什么会这样?(我的意思是,如果var_dump
是int 0
,为什么if语句不起作用?)
其次,我想要比较的解决方案。
我有一个整数/字符串变量。如果我在 mysqli 语句中有错误,它会变成String并且没有错误它会变成受影响的行数(Integer)。
但是在 PHP 中,如果我们有这样的东西:
$i = 0;
if ( $i < 0 || $i == null ) {
var_dump($i);
}
我们有这个结果:
int 0
首先,我想知道为什么会这样?(我的意思是,如果var_dump
是int 0
,为什么if语句不起作用?)
其次,我想要比较的解决方案。
您没有进行严格的比较。使用===
而不是==
.
==
将转换类型然后比较
请改用以下方法之一。is_null
是最干净的 IMO。
if ( $i < 0 || $i === null ) {..}
或者
if ( $i < 0 || is_null($i)) {..}
那是因为你使用==
. 只要一个操作数是null
- 然后另一个操作数被隐式转换为布尔值0
- >false
http://php.net/manual/en/language.operators.comparison.php
bool 或 null 任何东西 转换为 bool,FALSE < TRUE
您需要比较类型
var_dump($i == null); //true
var_dump($i === null); //false
您可以使用
$i = 0;
if ( $i < 0 || $i === null ) {
var_dump($i);
}
使用 === 比较器
if ( $i < 0 || $i === null ) {
var_dump($i);
}
使用该is_null()
功能。
if ( $i < 0 || is_null($i) ) {