我有以下PHP代码,给我一个意想不到的结果:
$foo = NULL;
switch($foo)
{
case 0:
print "What?!";
}
Run Code Online (Sandbox Code Playgroud)
我希望结果不算什么,但它与案例0匹配.php手册说NULL是非值,那么它怎么能等于0?
bor*_*ble 28
该switch语句应用松散比较,这意味着以下事物被视为等效于0:
false
0
"0"
NULL
"any string"
""
Run Code Online (Sandbox Code Playgroud)
因为 php 不是类型严格的语言
$foo = NULL;
if( isset( $foo ) ) {
switch( $foo ) {
case 0:
print "WTF!!!";
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这也可以写成
$foo = NULL;
switch( true )
{
case ( 0 === $foo ):
print "What?!";
default:
print "Default?!";
}
Run Code Online (Sandbox Code Playgroud)