我有一个整数/字符串变量。如果在mysqli语句中出错,则变为字符串,而没有错误时则成为受影响的行数的数量(整数)。
但是在PHP中,如果我们像这样:
$i = 0;
if ( $i < 0 || $i == null ) {
var_dump($i);
}
我们有以下结果:
int 0
首先,我想知道这种情况为什么会发生?(我的意思是,如果var_dump
是int 0
,为什么if语句不起作用?)
其次,我想要解决方案来进行比较。
我有一个整数/字符串变量。如果在mysqli语句中出错,则变为字符串,而没有错误时则成为受影响的行数的数量(整数)。
但是在PHP中,如果我们像这样:
$i = 0;
if ( $i < 0 || $i == null ) {
var_dump($i);
}
int 0
首先,我想知道这种情况为什么会发生?(我的意思是,如果var_dump
是int 0
,为什么if语句不起作用?)
其次,我想要解决方案来进行比较。
===
而不是==
。
==
会转换类型然后进行比较。is_null
最干净。if ( $i < 0 || $i === null ) {..}
或者
if ( $i < 0 || is_null($i)) {..}
var_dump($i == null); //true
var_dump($i === null); //false
标签
$i = 0;
if ( $i < 0 || $i === null ) {
var_dump($i);
}
==
。只要一个操作数是null
,那么另一个操作数就会被隐式转换为布尔值0
,即false
。bool或null 任何值 转换为布尔值,FALSE < TRUE
if ( $i < 0 || $i === null ) {
var_dump($i);
}
comparator
- 你从哪里得到这个词的? :-S 它是一个“操作符”,“comparator”通常是传递给排序函数的比较函数。 - zerkms
0
被视为空(NULL
) - Kermit=== null
- Fabian Schmengler