2

变量:

$mask = A | B | C;

我可以使用 switch 来测试每个常量,如下所示:

switch(true){
  case $mask & A:
   ...
  case $mask & B:
   ...
  case $mask & C:
   ...
}

我想知道是否有可能有一个更好的开关,比如:

switch($mask){
  case A:
   ...
  case B:
   ...
  case C:
   ...
}

我相信我需要用奇怪的 ~ 运算符以某种方式修改变量。但如何?

4

1 回答 1

1

可以按照您的说明构建开关

<?php

define("A", 1);
define("B", 2);
define("C", 4);


$mask = B | C;

switch(true){
  case $mask & A:
    echo "A";
    break;
  case $mask & B:
    echo "B";
    break;
  case $mask & C:
    echo "C";
    break;
}
?>

但问题是开关只会触发第一个匹配条件。因此,当您可能希望它回显 BC 时,上面的代码$mask = B | C;只会回显 B

所以简而言之,如果你希望行为是它只执行第一个匹配条件,那么你可以使用它,否则你将不得不做一系列的 ifs。

于 2013-07-22T18:57:26.840 回答