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。