初めに
if文で、
「AまたはBまたはCまたは...の場合」
というように、
特定のOR条件のパターンでのみ実行したい処理がある場合
愚直に書くとif文の条件式が長くなりがちです
イメージ(PHP):
hoge_before.php
<?php
function hoge(string $s)
{
if (
$s === 'A' ||
$s === 'B' ||
$s === 'C' ||
$s === 'D'
) {
echo 'OK!';
} else {
echo 'NG!';
}
}
hoge('A'); // 出力結果: OK!
hoge('B'); // 出力結果: OK!
hoge('C'); // 出力結果: OK!
hoge('D'); // 出力結果: OK!
hoge('Z'); // 出力結果: NG!
こんな時は、配列等を利用するとif文の条件式をスッキリ書くことができます。
配列を使う
PHPの場合
hoge_after.php
<?php
function hoge(string $s)
{
$arr = [
'A', 'B', 'C', 'D'
];
// $arrの配列に、$sが含まれるかをチェック
if (in_array($s, $arr, true)) {
echo 'OK!';
} else {
echo 'NG!';
}
}
hoge('A'); // 出力結果: OK!
hoge('B'); // 出力結果: OK!
hoge('C'); // 出力結果: OK!
hoge('D'); // 出力結果: OK!
hoge('Z'); // 出力結果: NG!
参考:
JavaScriptの場合
hoge_after.js
function hoge(s) {
const arr = [
'A', 'B', 'C', 'D'
];
// 変数arrの配列に、変数sが含まれるかをチェック
if (arr.includes(s)) {
console.log('OK! ');
} else {
console.log('NG! ');
}
}
hoge('A'); // 出力結果: OK!
hoge('B'); // 出力結果: OK!
hoge('C'); // 出力結果: OK!
hoge('D'); // 出力結果: OK!
hoge('Z'); // 出力結果: NG!
参考:
match式を使う
PHP 8.0.0 以降の場合
追記:
コメントにて補足いただいたのですが、PHP 8.0.0以降の場合はmatch式が利用できます。
その場合、上記の配列を使った書き方よりも簡潔に記述することができます。
(コメントありがとうございました!🙇♂️)
hoge_after2.php
function hoge(string $s)
{
echo match($s){
'A', 'B', 'C', 'D' => 'OK!',
default => 'NG!'
};
}
hoge('A'); // 出力結果: OK!
hoge('B'); // 出力結果: OK!
hoge('C'); // 出力結果: OK!
hoge('D'); // 出力結果: OK!
hoge('Z'); // 出力結果: NG!
参考: