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()
就可以了。a
switch()
会产生更多的代码行,但我同意如果测试的状态超过3个,一个开关是最好的选择。我曾经在有超过2个状态时编写一个开关,这更清楚,即使代码行多了一点。但这是个人的选择。Boooo.:)使用
开关的缺点是很容易忘记e
break
语句。因此,我更喜欢
if/else
。或者只使用switch语句。@C0deH4cker在这种情况下,使用
if()
就可以了。a
switch()
会产生更多的代码行,但我同意如果测试的状态超过3个,一个开关是最好的选择。我曾经在有超过2个状态时编写一个开关,这更清楚,即使代码行多了一点。但这是个人的选择。Boooo.:)使用
开关的缺点是很容易忘记e
break
语句。因此,我更喜欢
if/else