具有0和符号值的开关案例

时间:2014-12-28 13:14:43

标签: php switch-statement

所以,有switch语句的代码:

$v1 = "String:value:0:1";
$v2 = explode(":",$v1);

switch($v2[0]) {
    case "String":
        switch($v2[2]) {
            case 0: print("v2[2] is first nul"); break;
            case "0": print("v2[2] is second (string) nul"); break;
            case 1: print("v2[2] is not nul"); break;
            case "a": print("v2[2] is NaN"); break;
        }
    break;
}

所以,它应检查数组的第三部分是否为0.如果它包含NaN字符,我无法使其工作:

  • 如果$ v2 [2]为0,则脚本输出“v2 [2]为第一个nul”(纯0)
  • 如果$ v2 [2]不为0,则可以正常使用
  • 如果$ v2 [2]是NaN,那么脚本就会发出相同的值,就像值为0
  • 一样

有什么问题?

谢谢。

[已解决]:对于使用if / then / else的大型支票,在我的情况下,我决定使用案例表达式:case ($v2[2] === 0): print("v2[2] is second (string) nul"); break;

1 个答案:

答案 0 :(得分:0)

请参阅http://php.net/switch的第二个说明:

  

请注意,开关/外壳的比较松散。

链接到http://php.net/manual/en/types.comparisons.php#types.comparisions-loose,这意味着切换比较==而不是像===运算符。