在php语法中使用if和elseif

时间:2018-10-03 06:52:53

标签: php

这可能是一个菜鸟问题。我只是想问一下在switch语句中使用以下代码是否正确:

case 'OPTION1':
  if ($_SESSION['session2'] == 'cart') {  
    $code = '1567';
  }
  else if($_SESSION['session2'] == 'online') {  
    $code= 'A90f';
  } 
break;

还是我总是必须在每个if elseif语句的末尾添加一个else吗?谢谢!

3 个答案:

答案 0 :(得分:0)

您只需要添加一个else和多达else if的代码即可,因此您的示例很好。

有时您可能需要添加一些默认行为(与switch()中的行为相同),以覆盖-它与其他任何内容都不匹配...

  if ($_SESSION['session2'] == 'cart') {  
    $code = '1567';
  }
  else if($_SESSION['session2'] == 'online') {  
    $code= 'A90f';
  } 
  else {
    $code = '';
  }

但是你可以选择

  $code = '';
  if ($_SESSION['session2'] == 'cart') {  
    $code = '1567';
  }
  else if($_SESSION['session2'] == 'online') {  
    $code= 'A90f';
  } 

答案 1 :(得分:0)

OP的问题涉及PHP的基础知识,无论专业知识如何,这都是值得回顾的主题。尽管switch语句对于避免看起来很混乱的长if语句可能是有用的,但是OP的代码包含一个switch语句,只有一个case自身包含一个if控制结构。因此,尽管语法正确,但是switch语句显得多余,因为if控件结构可以很容易地执行而无需嵌入switch语句中。

关于 else 的用法,它提供了在一个或多个if语句评估为false的情况下执行的默认代码。另外,请注意,仅当前面的 if 条件返回false时,才会评估 else if 代码。为了说明:

<?php
  $a = 3;
  $b = 5;

  if ($a == $b) {
         echo '$a and $b are equivalent';
  }
  else
  if ($a > $b) {
        echo '$a is greater than $b';
  }
  else
  {
        echo 'The rain in Spain stays mainly in the plain';
  }
?>

参见live code并阅读更多here

您可以选择使用以下switch语句重新编码前面的示例:

<?php
   $a = 3;
   $b = 5;

   switch($a) {
   case ($b):
         echo '$a and $b are equivalent';
         break;
   case ($a > $b):
        echo '$a is greater than $b';
        break;
   default:
        echo 'The rain in Spain stays mainly in the plain';
        break;
   }
  ?>

请参见live code

关于switch声明,《手册》指出:

  

在许多情况下,您可能需要比较相同的变量(或   表达式)具有许多不同的值,并执行不同的部分   代码取决于它等于哪个值。就是这样   switch语句用于。

答案 2 :(得分:-1)

@Nigel的回答很好。我只是补充说,我将​​使用elseif而不是else if来满足PSR-2的要求:https://www.php-fig.org/psr/psr-2/

else ifelseif之间的行为是相同的。