PHP If块只使用最后一个块
我有如下代码:PHP If块只使用最后一个块,php,if-statement,statements,Php,If Statement,Statements,我有如下代码: if ($first == 1); { $q1 = "1"; $q2 = "2"; $q3 = "3"; } if ($first == 2); { $q1 = "1a"; $q2 = "2a"; $q3 = "3a"; } if ($first == 3); { $q1 = "1b"; $q2 = "2b"; $q3 = "3b"; } switch($first) { case 1: $q1 = "1"; $q2 = "2";
if ($first == 1); {
$q1 = "1";
$q2 = "2";
$q3 = "3";
}
if ($first == 2); {
$q1 = "1a";
$q2 = "2a";
$q3 = "3a";
}
if ($first == 3); {
$q1 = "1b";
$q2 = "2b";
$q3 = "3b";
}
switch($first) {
case 1:
$q1 = "1";
$q2 = "2";
$q3 = "3";
break;
case 2:
$q1 = "1a";
$q2 = "2a";
$q3 = "3a";
break;
case 3:
$q1 = "1b";
$q2 = "2b";
$q3 = "3b";
break;
}
变量$首先来自先前排序的数组。它是该数组中的键值
在本例中,变量为2,但代码始终取最后一个块,而不考虑其他任何内容。所以它会报告3区的答案,而不是2区的答案
也就是说,第一个$1的值为1、2或3时,第一个$1的值总是返回1b
有人知道为什么吗?这让我发疯。你不应该有
代码>在if语句的末尾。即如果($first==1),则更改;{
如果($first==1){
你不应该在你的if语句的末尾有;
。也就是说,如果($first==1){如果($first==1){如果($first==1){首先,从你的条件周围的括号中去掉分号
其次,应该使用if()
和else if()
:
但是,如果要比较3种以上的状态,则应使用switch()
语句生成更清晰的代码,如下所示:
if ($first == 1); {
$q1 = "1";
$q2 = "2";
$q3 = "3";
}
if ($first == 2); {
$q1 = "1a";
$q2 = "2a";
$q3 = "3a";
}
if ($first == 3); {
$q1 = "1b";
$q2 = "2b";
$q3 = "3b";
}
switch($first) {
case 1:
$q1 = "1";
$q2 = "2";
$q3 = "3";
break;
case 2:
$q1 = "1a";
$q2 = "2a";
$q3 = "3a";
break;
case 3:
$q1 = "1b";
$q2 = "2b";
$q3 = "3b";
break;
}
首先,从围绕条件的括号中删除分号 其次,应该使用
if()
和else if()
:
但是,如果要比较3种以上的状态,则应使用switch()
语句生成更清晰的代码,如下所示:
if ($first == 1); {
$q1 = "1";
$q2 = "2";
$q3 = "3";
}
if ($first == 2); {
$q1 = "1a";
$q2 = "2a";
$q3 = "3a";
}
if ($first == 3); {
$q1 = "1b";
$q2 = "2b";
$q3 = "3b";
}
switch($first) {
case 1:
$q1 = "1";
$q2 = "2";
$q3 = "3";
break;
case 2:
$q1 = "1a";
$q2 = "2a";
$q3 = "3a";
break;
case 3:
$q1 = "1b";
$q2 = "2b";
$q3 = "3b";
break;
}
您还可以使用switch语句:
switch($first)
{
case 1:
$q1 = "1";
$q2 = "2";
$q3 = "3";
break;
case 2:
$q1 = "1a";
$q2 = "2a";
$q3 = "3a";
break;
case 3:
$q1 = "1b";
$q2 = "2b";
$q3 = "3b";
break;
default:
}
您还可以使用switch语句:
switch($first)
{
case 1:
$q1 = "1";
$q2 = "2";
$q3 = "3";
break;
case 2:
$q1 = "1a";
$q2 = "2a";
$q3 = "3a";
break;
case 3:
$q1 = "1b";
$q2 = "2b";
$q3 = "3b";
break;
default:
}
或者只使用switch语句。@C0deH4cker在这种情况下,使用
if()
就可以了。aswitch()
会产生更多的代码行,但我同意如果测试的状态超过3个,一个开关是最好的选择。我曾经在有超过2个状态时编写一个开关,这更清楚,即使代码行多了一点。但这是个人的选择。Boooo.:)使用开关的缺点是很容易忘记ebreak
语句。因此,我更喜欢if/else
。或者只使用switch语句。@C0deH4cker在这种情况下,使用if()
就可以了。aswitch()
会产生更多的代码行,但我同意如果测试的状态超过3个,一个开关是最好的选择。我曾经在有超过2个状态时编写一个开关,这更清楚,即使代码行多了一点。但这是个人的选择。Boooo.:)使用开关的缺点是很容易忘记ebreak
语句。因此,我更喜欢if/else
。