Tᴀʀ*_*ᴏᴏᴅ 5 php equality switch-statement
刚刚发现一种奇怪的情况,我们只需要switch在完全相同的匹配(具有精确类型)上运行语句。请考虑以下情况:
$value = "";
switch ($value) {
case 0:
echo "Zero";
break;
case 1:
echo "One";
break;
case "":
echo "Empty";
break;
default:
echo "None";
break;
}
Run Code Online (Sandbox Code Playgroud)
这将echo “零”设置为我要echo “清空”的位置。这可以用某种方式处理switch语句吗?还是我只能if...elseif...else用===运算符使用?
PHP的switch语句已记录为使用松散比较。如果您需要完全匹配,那么不幸的是,最好的选择是对使用单独的if / else测试===。
一种替代方法是类似于
switch(true) {
case $value === 0:
//...
break;
}
Run Code Online (Sandbox Code Playgroud)
但这与一系列if-else语句几乎相同,但具有更多的键入和缩进。
这样尝试
$value = "";
switch (true) {
case ($value === 0):
echo "Zero";
break;
case ($value === 1):
echo "One";
break;
case ($value === ""):
echo "Empty";
break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
800 次 |
| 最近记录: |