PHP

PHP 配列の中に特定の値が含まれているかを調べるin_arrayの使い方

2016/01/24

配列の中に特定の値が含まれているかを調べる方法です。

in_array」を使用することで、配列の中に特定の値が含まれているかを調べることが出来ます。

in_array(探す値, 配列);

値が見つかった時にtrueを返します。

ifを使って下記のように使うことが多いのではないかと思います。
この場合、配列に2が含まれているので「配列に 2 が含まれています。」が表示されます。

<?php
  $x = 2;
  $array = array(1, 2, 3);
  if (in_array($x, $array)) {
    echo "配列に {$x} が含まれています。";
  } else {
    echo "配列に {$x} は含まれていません。";
  }
?>

» 実行結果

データ型まで比較する

第3引数を指定しない場合はデータ型を比較しない == と同じ比較をしますが、第3引数をtrueにすることでデータ型まで比較する、=== と同じ比較を行います。
下記では変数xに文字列の"2"を代入していますので、最初の第3引数を指定しない場合はtrueが返ってきて、次の第3引数をtrueにしている場合はfalseが返ってきます。

<?php
  $x = "2"; // 文字列の "2" を代入します。
  $array = array(1, 2, 3);
  if (in_array($x, $array)) { // 第3引数無しの場合、trueが返されますが、
    echo "配列に {$x} が含まれています。<br>\n";
  } else {
    echo "配列に {$x} は含まれていません。<br>\n";
  }

  if (in_array($x, $array, true)) { // 第3引数をtrueにした場合、データ型まで比較されfalseが返されます
    echo "配列に {$x} が含まれています。<br>\n";
  } else {
    echo "配列に {$x} は含まれていません。<br>\n";
  }
?>

» 実行結果

最後に…

第3引数を指定しない場合、 文字列の "2.0" と 整数の 2 を比べてもtrueを返してしまいますので、第3引数にtrueを指定する記述もちゃんと覚えておきましょう。

-PHP