用“mask”变量切换

时间:2013-07-22 18:45:36

标签: php switch-statement mask

变量:

$mask = A | B | C;

我可以使用switch来测试每个常量:

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

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

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

我相信我需要以某种奇怪的〜运算符来修改变量。但是如何?

1 个答案:

答案 0 :(得分: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;
}
?>

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

时回显B.

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