php - switch/case 和 if else 的行为不同
问题描述
我有以下代码
<?php
declare (strict_types = 1); // strict requirement
function fun1(int $interval)
{
$retVal = -10;
switch ($interval) {
case ($interval <= 45):
$retVal = 5;
break;
case ((90 <= $interval) && ($interval <= 100)):
$retVal = 1;
break;
}
return $retVal;
}
function fun2(int $interval)
{
$retVal = -10;
if ($interval <= 45){
$retVal = 5;
}
elseif((90 <= $interval) && ($interval <= 100)){
$retVal = 1;
}
return $retVal;
}
echo "FUN1";
echo "<br>";
echo fun1(0); // expected: 5 returned: 1 - ???
echo "<br>";
echo fun1(20); // expected: 5 returned: 5
echo "<br>";
echo fun1(95); // expected: 1 returned: 1
echo "<br>";
echo "FUN2";
echo "<br>";
echo fun2(0); // expected: 5 returned: 5
echo "<br>";
echo fun2(20); // expected: 5 returned: 5
echo "<br>";
echo fun2(95); // expected: 1 returned: 1
echo "<br>";
?>
返回:
FUN1
1
5
1
FUN2
5
5
1
为了得到缘故,我无法弄清楚为什么fun1(0)
返回 1 而不是 5
解决方案
推荐阅读
- spring - Atmosphere + Spring MVC 5 集成
- c# - 倒数计时器在 0 时不会触发任何东西
- android - Flutter Page View dispose children,如何留住children和bloc
- java - 如何将文件保存在appdata中
- java - 获取 java.lang.SecurityException:不支持的路径。但我要求权限
- python - 对 df 的 nan 值的不同处理
- lstm - 用于多类分类精度的 LSTM 模型
- python - mxnet 在使用烧瓶时使用动态形状输入导致 gpu 内存泄漏推断
- json - 如何修复通话中的额外参数?
- bash - 按照文本文件顺序排列数据