首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有关php中切换条件的问题

问有关php中切换条件的问题
EN

Stack Overflow用户
提问于 2011-08-14 21:34:22
回答 4查看 698关注 0票数 1

我希望有人知道为什么我会得到下面的输出,因为我期待的是其他东西。

代码语言:javascript
复制
$x = NULL;
switch ($x) {
    case "0": 
        echo "String"; 
        break;
    case 0: 
        echo "Integer"; 
        break;
    case NULL: 
        echo "NULL"; 
        break;
    case FALSE: 
        echo "Boolean"; 
        break;
    case "": 
        echo "Empty string"; 
        break;
    default: 
        echo "Something else"; 
        break;
}
// outputs "Integer" was expecting "NULL"

$x=6;
switch ($x) {
    case "6b": 
        echo "6b"; 
        break;
    case "6": 
        echo "6 empty"; 
        break;
    case 6: 
        echo "6 full"; 
        break;
    default: 
        echo "6 half";
        break;
}
// outputs "6b" was expecting "6 empty"
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-14 21:39:28

手册says

请注意,开关/大小写进行松散比较。

它将首先检查NULL == "0"是否不是"0",如果字符串为NULL,则为false。

作为整数的NULL是0,因此将匹配-打印整数。

对于6,它将大小写转换为整数- "6b"将变为等于的6。

所以这是因为:

代码语言:javascript
复制
NULL != "0";
NULL == 0;

"6b" == 6;
票数 5
EN

Stack Overflow用户

发布于 2011-08-14 21:37:46

注意:

请注意,switch/case进行松散比较。

http://php.net/manual/en/control-structures.switch.php

所以不是像这样做比较:你使用$x == 0:$x === 0

票数 2
EN

Stack Overflow用户

发布于 2011-08-14 21:39:33

switch/case所做的比较适用于类型杂耍。

基本上,它使用==运算符,而不是===运算符。

引用Comparison Operators:

如果将数字与字符串进行比较,或者比较涉及数字字符串,则每个字符串都将转换为数字,并以数字形式执行比较。

这些规则也适用于switch语句。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7057100

复制
相关文章

相似问题

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