繁体   English   中英

IF vs. SWITCH,哪个更适合这项工作?为什么?

[英]IF vs. SWITCH and which is more suitable for this job and why?

我想知道是否有可能在switch语句/案例中复制这种检查:

if(isset($_POST["amount"]) && (isset($_POST["fruit"]))) {    
    $amount = $_POST['amount'];
    $fruit = $_POST['fruit'];
    if($fruit == "Please select a fruit") { 
    echo "<script>alert('Required Field: You must choose a fruit to receive your total')</script>"; 
} else if(empty($fruit) or ($amount<=0) or ($amount>50)) {
    echo "<script>alert('Required Field: You must enter an amount between 0-50g to receive your total')</script>";
} ... and further on

注意:我将更加关注可以在一个IF中简单完成的&&比较,以及是否有可能在切换情况下完成并接收嵌套if / else这样的结果。 如果不可能,为什么呢? 哪种方法更有效?为什么?

我宁愿使用If-Else If条件,也不愿将其转换为Switch语句。 您必须认识到switch语句仅接受一个参数:

switch($arg)

在您的情况下, amount$_POST["amount"]fruit$_POST["fruit"] 您的第一个问题是如何在switch语句中传递这2个值。

在这种情况下,您不能使用开关,因为您正在检查两个产生boolean结果的变量的条件( isset )。 那么实际上你可以做一个switch这个条件,并在真实的情况下,切换到该代码,并在假到代码的情况。 但是,恕我直言,这没有多大意义。 在开关中,您只需要检查一个变量或表达式,就可以执行无论该开关求值结果如何的代码。 因此,不能,您不能使用这些嵌套的if进行切换。

编辑:为了使这一点更加清楚,当您发现对同一变量使用多个if时,最好使用swicth:

if ($var < 3)
{
    // do this
}
elseif ($var < 6)
{
    // do that
}
else
{
   // do something other
}

这样写会更好:

switch ($var)
{
    case < 3:
        // do this
        break;
    case < 6:
        // do that
        break;
    default:
        // do somehting other
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM