PHP ELSE IF statement


PHP ELSE IF statement

无法让我的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语句…只要有可能使用分离条件,我建议你这样做。