• HOME > 
  • PHP > 
  • PHPで配列内に値が存在するか判定する【in_array】

PHPで配列内に値が存在するか判定する【in_array】

投稿日:

このページにはGoogleアドセンス広告とアフィリエイト広告が含まれています。

カテゴリー記事のアイキャッチ画像

本記事は執筆時点(2024年07月02日)の情報をベースにしております。掲載している情報が最新ではない可能性がありますので何卒ご容赦ください。

広告
広告

in_array関数の使い方

PHPについて学んだ内容を備忘録としてまとめています。今回は「in_array」関数についてです。(※勉強中につき、間違って理解している恐れもあるのでご容赦ください)

PHPのin_arrayは、配列内に特定の値が存在するかを判定して、結果をtrueかfalseで返してくれる関数です。

データの有無によって異なる処理を行いたいときなどに良く用いられます。

in_arrayは下記のように第一引数に「調べたい値」、第二引数に「対象の配列」を指定して判定を行います。

in_array関数の使い方

下の例では、「東京都」と「北海道」が配列内に存在するかをそれぞれ調べています。「東京都」は存在するのでtrueを返しますが、「北海道」は含まれていないのでfalseが返ってきます。

PHP

$arr = ['東京都','埼玉県','千葉県','神奈川県','茨城県','栃木県','群馬県'];

var_dump(in_array('東京都',$arr));//結果:true

var_dump(in_array('北海道',$arr));//結果:false

第三引数を指定して型も判定する

in_arrayは第三引数に「true」を加えることで、値の型(文字か数値か)が一致しているかチェックするようになります。

逆を言えば、第三引数が無いと型が違っていても値が一致しているとtrueが返ってくるので注意が必要です。

まず下の例で第三引数の無い場合を見てみましょう。

PHP

$arr = [0,1,2,3,4,5];
var_dump(in_array('1',$arr));//結果:true

配列の値は数値型(int)、in_arrayで検索している値は文字型(varchar)ですが、第三引数が無い場合は型は無視されるのでtrueが返ってきています。

では第三引数を指定してみます。

PHP

$arr = [0,1,2,3,4,5];
var_dump(in_array('1',$arr,true));//結果:false

型が一致しているかどうかもチェックされるので、結果はfalseとなります。

多次元配列に使用する場合

下記の例のような多次元配列に対して、単にin_arrayを使っても意図した結果を得ることはできません。

3行目「saitama」を値に持つレコードが存在してますが、in_arrayの戻り値は「false」です。

PHP

$arr = [
    ['id' => 1, 'name' => '東京都', 'code' =>'tokyo', 'furigana' => 'トウキョウト'],
    ['id' => 2, 'name' => '埼玉県', 'code' =>'saitama', 'furigana' => 'サイタマケン'],
    ['id' => 3, 'name' => '千葉県', 'code' =>'chiba', 'furigana' => 'チバケン'],
    ['id' => 4, 'name' => '神奈川県', 'code' =>'kanagawa', 'furigana' => 'カナガワケン'],
];
var_dump(in_array('saitama',$arr));//結果はfalse

多次元配列でin_arrayによる存在判定を行いたい場合は、array_column関数と組み合わせて実装します。

array_columnは、多次元配列から特定のカラムの値を抽出して新しい配列を作る関数です。

下記の例のようにarray_columnを使って一旦キー「code」の値のみを収めた配列を用意し、その配列に対してin_arrayで判定を行います。

PHP

$arr = [
    ['id' => 1, 'name' => '東京都', 'code' =>'tokyo', 'furigana' => 'トウキョウト'],
    ['id' => 2, 'name' => '埼玉県', 'code' =>'saitama', 'furigana' => 'サイタマケン'],
    ['id' => 3, 'name' => '千葉県', 'code' =>'chiba', 'furigana' => 'チバケン'],
    ['id' => 4, 'name' => '神奈川県', 'code' =>'kanagawa', 'furigana' => 'カナガワケン'],
];

$column = array_column($arr,'code');
//array(4) { [0]=> string(5) "tokyo" [1]=> string(7) "saitama" [2]=> string(5) "chiba" [3]=> string(8) "kanagawa" }

var_dump(in_array('saitama',$column));//結果はtrue

array_columnについて詳しくはこちらのページをご覧ください。

array_searchとの違い

array_searchは該当する値を見つけたら、そのインデックス番号を返します。

in_arrayは値の有無しか判定できませんので、「配列のどこにあるのか」や「該当する値のキーを取り出したい」といった場合にはarray_searchの方が適しています。

array_searchについて詳しくはこちらのページをご覧ください。

まとめ

以上が、PHPで配列内に値が存在するかを判定できるin_array関数の使い方です。

PHPではデータベースと連動した処理を扱うことが多いので、データの有無を判定できるin_arrayは幅広く活躍する関数です。

広告
広告

関連する記事

サムネイル

PHPで配列内を検索してインデックス番号を取得する【arra……

2024年07月03日
array_searchは、配列内から特定の値を検索し、見つかった場合はその値のキー(インデックス番号)を返す関数です。該当する値が複数ある場合は、はじめに見つかったインデックス番号を返します。
サムネイル

PHPで配列から特定の値を持つキーを全て取得する【array……

2024年07月02日
HPのarray_keys関数は対象の配列からすべてのキー、もしくは特定の値を持つキーを取得して新しい配列として返してくれる関数です。基本的には引数に配列と検索する値をセットして使用します。
サムネイル

PHPで多次元配列の並び替え(ソート)を行う【array_m……

2024年06月13日
PHPで配列のソートを行う方法は他にもありますが、array_multisort関数を使えば、とても簡潔なコードで多次元配列を任意の条件・順序で並び替えを行うことができます。
サムネイル

PHPで配列の最小値や最大値を取得する【minとmax】

2024年06月13日
PHPのmin関数とmax関数はそれぞれ配列の最小値と最大値を取得できる関数です。引数に対象の配列を指定すると最小値や最大値を返します。
サムネイル

PHPで多次元配列から特定のカラムの値を取得する【array……

2024年05月29日
PHPのarray_columnは多次元配列の中から指定したカラムの値のみを抽出することができる関数です。抽出した値は新しい配列に格納されて返ってきます。
サムネイル

XAMPPでSSLを有効にする方法【httpsでアクセスでき……

2024年04月12日
最終更新日:2024年10月02日
XAMPPをSSL化してhttpsでアクセスできるようにするには、設定ファイルの変更と証明書の作成が必要です。