PHP ELSE IF语句

时间:2011-12-02 07:51:39

标签: php rounding if-statement

无法获得我的其他如果声明工作,有没有人有任何想法?它没有其他的工作,如果....

$waveFeet = round("$ar2");
        if ($waveFeet >= 2) {
            echo $waveFeet - 1;
        }
        else if ($waveFeet > 5) {
            echo $waveFeet - 2;
        }

        else 
        {
            echo "$wavefeet";   
        }

另外作为一个附带问题,任何人都可以告诉我如何更改我的圆()以使其始终圆(下)而不是向上或向下舍入......?

5 个答案:

答案 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语句......每当可以使用析取条件时,我建议你这样做......