下面的php代码给了我一个意想不到的结果:
$foo = NULL;
switch($foo)
{
case 0:
print "What?!";
}
我希望结果为nothing,但它与case 0匹配。php手册说NULL是一个非值,那么它怎么会等于0呢?
发布于 2011-08-17 19:06:50
switch
语句应用loose comparison,这意味着以下内容被视为等同于0:
false
0
"0"
NULL
"any string"
""
发布于 2011-08-17 19:00:57
beacuse php不是类型严格的语言
$foo = NULL;
if( isset( $foo ) ) {
switch( $foo ) {
case 0:
print "WTF!!!";
}
}
发布于 2018-12-17 13:46:05
这也可以写成
$foo = NULL;
switch( true )
{
case ( 0 === $foo ):
print "What?!";
default:
print "Default?!";
}
https://stackoverflow.com/questions/7091671
复制相似问题