无法让我的else if语句工作,有人有任何想法吗?它不需要else if....
$waveFeet = round("$ar2");
if ($waveFeet >= 2) {
echo $waveFeet - 1;
}
else if ($waveFeet > 5) {
echo $waveFeet - 2;
}
else
{
echo "$wavefeet";
}
也作为一个侧面问题,谁能告诉我如何改变我的round(),使其始终四舍五入(向下)而不是四舍五入或向下…?
使用round的第三个参数可以舍入
echo $waveFeet = round($ar2, 2, PHP_ROUND_HALF_DOWN);
对于您的if
,您的else if
条件永远不会为真,因为如果$waveFeet
大于或等于2
,第一个条件将为真,因此您的elseif
条件永远不会为真。
应该改成
if ($waveFeet > 5) {
echo $waveFeet - 1;
}
else if ($waveFeet >= 2) {
echo $waveFeet - 2;
}
else
{
echo $wavefeet;
}
用一个特定的值尝试语句,比如$waveFeet = 10;
,然后逐步执行代码。第一个条件成功,因此不会检查后面的分支。实际上,只有在$waveFeet < 2
时才会输入第一个分支,在这种情况下,将执行最后一个分支体。因此,中间的分支永远不会执行。排他性更强的情况应该放在前面:
if (5 < $waveFeet) {
...
} elseif (2 <= $waveFeet) {
...
} else {
# $waveFeet < 2
...
}
为了完全安全,您可以指定两个边界条件:
...
} elseif (2 <= $waveFeet && $waveFeet <= 5) {
...
由于冗余的低效率是最小的,代码更清晰。当你越来越有经验时,你就可以不再做这种事了。
如果您希望将偶数负数舍入,请使用floor
。如果你想向零四舍五入(即截断),转换为int:
$waveFeet = (int) $ar2;
你可以使用floor作为向下整数
$waveFeet = floor($ar2);
if ($waveFeet > 5)
echo $waveFeet - 2;
else if ($waveFeet >= 2)
echo $waveFeet - 1;
else
echo $wavefeet;
你必须首先检查5 BCZ 5大于2并且你的第一条件>= 2也满足如果不>5所以控制进入第一条件而不是第二个....
您的代码中没有任何错误(除了您可以将参数传递给函数而不带引号)。你检查它的方法是错误的。
它不会去else if
条件,因为条件将在第一次检查中满足。
PHP内置的floor()
和ceil()
函数分别对数字进行上下舍入。我建议张贴你得到的错误,这样我们可以帮助你更快=)
试试这个:
$waveFeet = floor($ar2);
if ($waveFeet >= 2 && $waveFeet <= 5 ) {
echo $waveFeet - 1;
} else if ($waveFeet > 5) {
echo $waveFeet - 2;
} else {
echo $wavefeet;
}
注意第一个条件的变化(增加了&&$waveFeet <= 5)
我认为问题可能是你在第一个和第二个条件中使用的范围是重叠的,很可能在这种情况下,让我们说,$waveFeet == 6
PHP评估你的第一个条件(原来是$waveFeet >= 2
),它恰好是true
,所以PHP不测试else if
语句…只要有可能使用分离条件,我建议你这样做。