0

我的代码如下所示:

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";
}

变量 $first 来自之前排序的数组。这是该数组中的一个键值。

在本例中,变量为 2,但代码始终采用最后一个块,而不管其他任何内容。所以它会报告 3 块的答案,而不是 2 块。

也就是说,为 $first 获取值 1、2 或 3 将始终为 $q1 返回 1b。

有谁知道为什么?这让我发疯了。

4

3 回答 3

4

首先,从您的条件周围的括号中删除分号。

其次,您应该使用if()and else if()

if($first == 1) {
    $q1 = "1";
    $q2 = "2";
    $q3 = "3";
} else if($first == 2) {
    $q1 = "1a";
    $q2 = "2a";
    $q3 = "3a";
} else if($first == 3) {
    $q1 = "1b";
    $q2 = "2b";
    $q3 = "3b";
}

但是,如果您要比较 3 个以上的状态,则应该使用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;
}
于 2012-06-02T22:07:20.997 回答
2

你不应该;在你的 if 语句的末尾。即改成if ($first == 1); {这个if ($first == 1) {

于 2012-06-02T22:06:19.380 回答
0

您还可以使用 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:
}
于 2012-06-02T22:10:44.160 回答