LoginSignup
45
21

More than 1 year has passed since last update.

if文で、「AまたはBまたはCまたは....の場合」の条件式をスッキリ書きたい(PHP, JavaScript)

Last updated at Posted at 2022-07-26

初めに

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!

参考:

45
21
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
21