无法获得我的其他如果声明工作,有没有人有任何想法?它没有其他的工作,如果....
$waveFeet = round("$ar2");
if ($waveFeet >= 2) {
echo $waveFeet - 1;
}
else if ($waveFeet > 5) {
echo $waveFeet - 2;
}
else
{
echo "$wavefeet";
}
另外作为一个附带问题,任何人都可以告诉我如何更改我的圆()以使其始终圆(下)而不是向上或向下舍入......?
答案 0 :(得分:1)
使用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;
}
答案 1 :(得分:1)
尝试使用特定值的语句,例如$waveFeet = 10;
,然后逐步执行代码。第一个条件成功,因此从不检查后面的分支。实际上,唯一没有输入第一个分支的时间是$waveFeet < 2
,在这种情况下,最后一个分支体将被执行。因此中间分支永远不会被执行。应该首先提出更独特的案例:
if (5 < $waveFeet) {
...
} elseif (2 <= $waveFeet) {
...
} else {
# $waveFeet < 2
...
}
为了完全安全,您可以指定两个边界条件:
...
} elseif (2 <= $waveFeet && $waveFeet <= 5) {
...
冗余导致的低效率极低,代码更清晰。随着你越来越有经验,你可以放弃这种事情。
如果您希望舍入负数,请使用floor
。如果你希望向零舍入(即截断),则转换为int:
$waveFeet = (int) $ar2;
答案 2 :(得分:0)
你可以使用地板进行下行
$waveFeet = floor($ar2);
if ($waveFeet > 5)
echo $waveFeet - 2;
else if ($waveFeet >= 2)
echo $waveFeet - 1;
else
echo $wavefeet;
你必须首先检查5 bcz 5是否大于2且你的第一个条件&gt; = 2也满意如果没有&gt; 5所以控制进入第一个条件而不是第二个....
答案 3 :(得分:0)
你的代码中没有错(除了你可以将参数传递给没有引号的函数)。你检查它的方式是错误的。
它不会进入else if
条件,因为条件将在第一次检查中得到满足。
答案 4 :(得分:0)
PHP内置floor()
和ceil()
函数分别向下和向上舍入一个数字。我建议发布你得到的错误,这样我们可以更快地帮助你=)
试试这个:
$waveFeet = floor($ar2);
if ($waveFeet >= 2 && $waveFeet <= 5 ) {
echo $waveFeet - 1;
} else if ($waveFeet > 5) {
echo $waveFeet - 2;
} else {
echo $wavefeet;
}
注意第一个条件的变化(添加&amp;&amp; $ waveFeet&lt; = 5 )
我认为问题可能是你在第一个和第二个条件中使用的范围是重叠的,并且在这种情况下,很可能是,$waveFeet == 6
PHP评估你的第一个条件(最初$waveFeet >= 2
1}}),碰巧是true
,所以PHP不测试else if
语句......每当可以使用析取条件时,我建议你这样做......