首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >switch语句中的php空值混淆

switch语句中的php空值混淆
EN

Stack Overflow用户
提问于 2011-08-17 18:58:14
回答 7查看 19.5K关注 0票数 29

下面的php代码给了我一个意想不到的结果:

代码语言:javascript
复制
$foo = NULL;

switch($foo)
{
    case 0:
        print "What?!";
}

我希望结果为nothing,但它与case 0匹配。php手册说NULL是一个非值,那么它怎么会等于0呢?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-08-17 19:06:50

switch语句应用loose comparison,这意味着以下内容被视为等同于0:

代码语言:javascript
复制
false
0
"0"
NULL
"any string"
""
票数 36
EN

Stack Overflow用户

发布于 2011-08-17 19:00:57

beacuse php不是类型严格的语言

代码语言:javascript
复制
$foo = NULL;

if( isset( $foo ) ) {
    switch( $foo ) {
        case 0:
            print "WTF!!!";
    }
}
票数 7
EN

Stack Overflow用户

发布于 2018-12-17 13:46:05

这也可以写成

代码语言:javascript
复制
$foo = NULL;

switch( true )
{
    case ( 0 === $foo ):
        print "What?!";
    default:
        print "Default?!";
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7091671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档