我的代码如下:
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。
任何人都知道为什么?这让我疯了。
答案 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:
}