这可能是一个菜鸟问题。我只是想问一下在switch语句中使用以下代码是否正确:
case 'OPTION1':
if ($_SESSION['session2'] == 'cart') {
$code = '1567';
}
else if($_SESSION['session2'] == 'online') {
$code= 'A90f';
}
break;
还是我总是必须在每个if elseif语句的末尾添加一个else吗?谢谢!
答案 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';
}
?>
您可以选择使用以下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 if
和elseif
之间的行为是相同的。