PHP如果块仅使用最后一个块

时间:2012-06-02 22:05:12

标签: 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";
}

变量$ first来自先前排序的数组。这是该阵列的关键值。

在这种情况下,变量是2,但代码-always-采用最后一个块而不管其他什么。所以它会报告3块的答案,而不是2块。

也就是说,以$ 1为单位获得1,2或3的值将始终为$ q1返回1b。

任何人都知道为什么?这让我疯了。

3 个答案:

答案 0 :(得分:4)

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

其次,您应该使用if()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;
}

答案 1 :(得分:2)

你的if语句末尾不应该有;。我将if ($first == 1); {更改为此if ($first == 1) {

答案 2 :(得分: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:
}