したがって、4つの条件を経験する必要があり、PHPでswitch
ステートメントを使用するのが最善だと考えました。ただし、整数が、たとえば以下か、それ以上かを確認する必要があります。
_switch ($count) {
case 20:
$priority = 'low';
break;
case 40:
$priority = 'medium';
break;
case 60:
$priority = 'high';
break;
case 80:
$priority = 'severe';
break;
}
_
if()
ステートメントを使用すると、次のようになります。
_if ($count <= 20) {
$priority = 'low';
}
if ($count <= 40) {
$priority = 'medium';
}
_
_switch-case
_で可能ですか?
この問題を解決するためのより一般的なケースは次のとおりです。
switch (true) {
case $count <= 20:
$priority = 'low';
break;
case $count <= 40:
$priority = 'medium';
break;
case $count <= 60:
$priority = 'high';
break;
default:
$priority = 'severe';
break;
}
スイッチはそれを行うことはできませんが、この特定のケースでは、次のようなことができます。
switch ((int)(($count - 1) / 20)) {
case 0:
$priority = 'low';
break;
case 1:
$priority = 'medium';
break;
case 2:
$priority = 'high';
break;
case 3:
$priority = 'severe';
break;
}
(int)(($count - 1) / 20)
0から20までのすべての値は0に評価され、21から40は1に評価されるなど、この目的でswitchステートメントを使用できます。
また、値を連結しているため、配列に単純化することもできます。
$priorities = ['low', 'medium', 'high', 'severe'];
$priority = $priorities[(int)(($count - 1) / 20)];
PHP 7で三項代入演算子を使用する方法があります。演算子は以前に(5.4?)で導入されましたが、他のバージョンでコードをテストしたことはありません。スイッチコード全体を記述しました there ですが、簡潔にするためにここでは特定の句のみを示します。 5以上のすべての数値に対して条件を一致させたいとしましょう:
switch($value){
case ($value >= 5?$value:!$value)://do something here
break;
}
$ valueを変更せずに渡すか、条件に応じて値を無効にします。 $ valueは常にそれ自体と一致するか、その否定に対するテストに失敗します。
いいえ。switch()
ステートメントは、複数の同等性テストを行うためのものです。それらは基本的に、わずかに読みやすい(しかしより危険な)バージョンでもあります
_if (x == 'a') { ... }
else if (x == 'b') { ... }
else if (x == 'c') { ... }
_
コード。 switch()
を_==
_から_<
_または他の比較演算子に変更する方法はありません。厳密に同等性テスト用です。