配列に値があるかチェックする

# in_array

(PHP 4, PHP 5, PHP 7, PHP 8)

in_array — 配列に値があるかチェックする

### 説明

function in_array(mixed `$needle`, array `$haystack`, bool `$strict` = `false`): bool

`haystack` 内の `needle` を検索します。 `strict` が設定されていない限りは型の比較は行いません。

### パラメータ

`needle`

  探す値。

  > 注意:

  > `needle` が文字列の場合、 比較の際に大文字小文字は区別されます。

`haystack`

  配列。

`strict`

  三番目のパラメータ `strict` が `true` に設定された場合、 in_array() は、`haystack` の中の `needle` の 型も確認します。

  > 注意:

  > PHP 8.0.0 より前のバージョンでは、 strict フラグが指定されていない場合に、 配列の値が `0` の場合でも文字列にマッチしてしまっていました。逆も同じです。 これにより、望ましくない結果が生じる可能性があります。 似たようなエッジケースは他の型でも存在します。 値の型が完全にわからない場合には、 予期せぬ振る舞いを避けるために常に `strict` フラグを使うようにして下さい。

### 戻り値

配列で `needle` が見つかった場合に `true`、それ以外の場合は、`false` を返します。

### 例

例1 in_array() の例

    <?php
    $os = array("Mac", "NT", "Irix", "Linux");
    if (in_array("Irix", $os)) {
        echo "Got Irix";
    }
    if (in_array("mac", $os)) {
        echo "Got mac";
    }
    ?>

二番目の条件式は失敗します。in_array() は大文字小文字を区別するからです。したがって次のような出力になります。

    Got Irix

例2 strict を指定した in_array() の例

    <?php
    $a = array('1.10', 12.4, 1.13);

    if (in_array('12.4', $a, true)) {
        echo "'12.4' found with strict check\n";
    }

    if (in_array(1.13, $a, true)) {
        echo "1.13 found with strict check\n";
    }
    ?>

上の例の出力は以下となります。

    1.13 found with strict check

例3 needleが配列の場合の in_array()

    <?php
    $a = array(array('p', 'h'), array('p', 'r'), 'o');

    if (in_array(array('p', 'h'), $a)) {
        echo "'ph' was found\n";
    }

    if (in_array(array('f', 'i'), $a)) {
        echo "'fi' was found\n";
    }

    if (in_array('o', $a)) {
        echo "'o' was found\n";
    }
    ?>

上の例の出力は以下となります。

    'ph' was found
    'o' was found

### 参考

- array_search() - 指定した値を配列で検索し、見つかった場合に対応する最初のキーを返す
- isset() - 変数が宣言されていること、そして null とは異なることを検査する
- array_key_exists() - 指定したキーまたは添字が配列にあるかどうかを調べる

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open