switch语句可以带两个参数吗?

时间:2011-07-05 19:20:48

标签: php

PHP switch语句有可能采用2个参数吗?例如:

switch (firstVal, secondVal){

    case firstVal == "YN" && secondVal == "NN":
    thisDesc = "this is the outcome: YN and NN";
    break;

    case firstVal == "YY" && secondVal == "NN":
    thisDesc = "this is the outcome: YY and NN";
    break;
}

非常感谢,我多年没有做过PHP了!

3 个答案:

答案 0 :(得分:6)

不,你不能。一个switch - 声明,如

switch ($a) {
  case 1:
  break;
  case 2:
  break;
}

实际上与

相同
if ($a == 1) {
} else if ($a == 2) {
}

您可以使用稍微不同的构造

switch (true) {
  case $firstVal == "YN" && $secondVal == "NN":
  break;
  case $firstVal == "YY" && $secondVal == "NN":
  break;
}

相当于

if (true == ($firstVal == "YN" && $secondVal == "NN")) {
} else if (true == ($firstVal == "YY" && $secondVal == "NN")) {
}

在某些情况下,它更具可读性而非无限if-elseif-else - 链。

答案 1 :(得分:3)

不,但如果您的案例与您所拥有的一样简单,只需连接两个输入并测试连接值:

switch ($firstval . $secondval) {
 case "YNNN": ...
 case "YYNN": ...
}

答案 2 :(得分:0)

我很确定你不能这样做,不仅仅是PHP,还有其他任何编程语言。