在switch语句中使用php 0

时间:2017-09-12 16:16:45

标签: php switch-statement

我在PHP转换语句中遇到了一个令人费解的问题

    $strKey = 0;
    $answer = null;
    switch($strKey){
        case 'intProductionOrder':
            $answer = 'intProductionOrder';
            break;
        case 'second':
            $answer = 'second';
            break;
        default:
            $answer = 'default';
    }
    echo $answer;

应该返回默认值但不返回,它返回intProductionOrder,为什么?

2 个答案:

答案 0 :(得分:1)

查看此帖子了解原因:Why does PHP consider 0 to be equal to a string?

case语句中的字符串在比较之前会被转换为int,然后它会进入第一个case语句。在switch语句中使用strval()来修复它并强制比较字符串。

答案 1 :(得分:1)

  

String conversion to numbers

     

在数值上下文中计算字符串时,结果值   和类型确定如下。

     

如果字符串不包含'。' ' 中的任何字符' E'   并且数值适合整数类型限制(由...定义)    PHP_INT_MAX ),该字符串将被计算为整数。在所有其他   案例将被评估为浮动。

     

该值由字符串的初始部分给出。如果是字符串   从有效的数字数据开始,这将是使用的值。   否则,该值将为0 (零)。有效的数字数据是   可选符号,后跟一个或多个数字(可选地包含一个   小数点),后跟可选的指数。指数是&#39; &#39; <&#39; 后跟一个或多个数字。