2

変数:

$mask = A | B | C;

そして、スイッチを使用して、次のように各定数をテストできます。

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;
}
?>

しかし、問題は、スイッチが最初の一致条件のみをトリガーすることです。したがって、上記のコードは、$mask = B | C;おそらくBCをエコーし​​たい場合にのみBをエコーし​​ます

つまり、最初に一致した条件のみを実行する動作にしたい場合は、これを使用できます。それ以外の場合は、一連の if を実行する必要があります。

于 2013-07-22T18:57:26.840 に答える