Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php开关语句和0_Php_Switch Statement_Zero - Fatal编程技术网

php开关语句和0

php开关语句和0,php,switch-statement,zero,Php,Switch Statement,Zero,嗨,我今天看到一个这样的代码 $i=0; switch($i){ case 'TEST': print "Test";break; case 0: print "0";break; } 正常输出似乎是0,但它会打印Test。然后我试着去理解它,并找到了解决办法。也就是说,当将数字与字符串进行比较时,字符串将转换为数字,并以数字进行比较。好,那么就可以得到输出测试了 但如果我像这样设置相同的值呢 $i=0; switch($i){ case ($a === 'Test'

嗨,我今天看到一个这样的代码

$i=0;
switch($i){
    case 'TEST': print "Test";break;
    case 0: print "0";break;
} 
正常输出似乎是
0
,但它会打印
Test
。然后我试着去理解它,并找到了解决办法。也就是说,当将数字与字符串进行比较时,字符串将转换为数字,并以数字进行比较。好,那么就可以得到输出
测试了

但如果我像这样设置相同的值呢

$i=0;
switch($i){
    case ($a === 'Test'): print "Text";break;
    case ($a === 0): print "0";break;
}

这也给出了结果
Test
,所以我在这里感到困惑。如果我使用
==
而不是
==
,那么它会显示为空。所以请让我明白这一点。

你必须把$i作为数字吗? 让它也成为一根绳子

$i="0";
switch($i){
    case 'Test': print "Text";break;
    case '0': print "0";break;
}

打印0…

的开关将
0
视为
false
,因此您可以执行以下操作:

$i=0;
switch(true){
    case $i === 'TEST': print "Test";
        break;
    case $i === 0 : print "0";
        break;
} 

使用
switch(true)
因为$a=='Test'等同于true或false您将获得switch语句中案例的松散类型比较-
0!='Test'
但是
0=='Test'
-所以最好避免混合不同的数据类型。所以第一个例子0与'Test'-'Test'相比,是一个字符串,它等于0,导致匹配
===
的类型匹配到OK,我得到了。我必须使用
开关(true)
进行比较。谢谢你的回答。$a=='Test'等于false。开关(0)与第一种情况相同,在第一种情况下它为FALSE,因为0为FALSE。