PHPのin_arrayについて説明します。
in_arrayとは?
特定の値が配列に含まれてるかを確認
in_arrayとは、特定の値が配列に含まれてるかを確認する関数のこと。
分類:関数 > 配列関数
使い方
書式
in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : bool
引数
- $needle(必須):検索文字列。配列に含まれてるか探したい値。
- $haystack(必須):検索対象の配列。
- $strict(任意):型チェックしたい場合はTRUE, 不要な場合はFALSEを指定することができる。デフォルトはFALSE。
戻り値:bool型
- 配列に指定したneedleで指定した値が含まれていればtrue
- 配列に指定したneedleで指定した値が含まれていなければfalse
一例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php $characters = ['アーデン', 'アラネア', 'ルナフレーナ', 'ノクティス', 'ソル', 'レイヴス']; $numbers = [0, 1, 2, 3, 5, 8, 13]; echo '■ 含まれるケース / 含まれないケース(文字列)', PHP_EOL; echo in_array('アーデン', $characters), PHP_EOL; // true(1) echo in_array('エイラ', $characters), PHP_EOL; // false() echo '■ 含まれるケース / 含まれないケース(数値)', PHP_EOL; echo in_array(0, $numbers), PHP_EOL; // true(1) echo in_array(999, $numbers), PHP_EOL; // false() echo '■ 暗黙の型変換によりtrue(1)を返す', PHP_EOL; echo in_array('アーデン', $numbers), PHP_EOL; // true(1) echo '■ 試しに文字列をint型にキャスト', PHP_EOL; echo (int)$characters[0], PHP_EOL; echo '■ 第三引数で型チェックTRUEにすれば想定通り', PHP_EOL; echo in_array('アーデン', $numbers, TRUE); // false() |
実行結果
1 2 3 4 5 6 7 8 9 10 11 |
■ 含まれるケース / 含まれないケース(文字列) 1 ■ 含まれるケース / 含まれないケース(数値) 1 ■ 暗黙の型変換によりtrue(1)を返す 1 ■ 試しに文字列をint型にキャスト 0 ■ 第三引数で型チェックTRUEにすれば想定通り |
実行結果から解ること
■基本
第一引数が第二引数の要素に含まれていればtrueを返す。
含まれていなければfalseを返す。
■型を意識すること
文字列と数値を比較する際には注意が必要。
暗黙の型変換の関係で、気付かぬ内に文字列が0で比較されている可能性がある。
型込みで比較したい場合は、第三引数にTRUEを指定すること。
用途例
エラーハンドリング時
一例として、エラーハンドリング時などに使える。
入っている筈の要素が入っているかの判別をし、入っている場合と入っていない場合に処理を分岐させる。
一意となる配列の作成
私が実際に実務で使ったケースとして「既に存在する配列から、一意となる値のみの配列の作り直し」があった。
文字だけだと解りづらいので実例としては、下記のような要領。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php $characters = ['アーデン', 'アラネア', 'アラネア', 'アラネア', 'ルナフレーナ', 'ルナフレーナ', 'ノクティス', 'ノクティス', 'ノクティス', 'ノクティス', 'ノクティス', 'ノクティス', 'ソル', 'レイヴス', 'レイヴス']; $uniqueCharacters = array(); foreach ($characters as $character) { if (!in_array($character, $uniqueCharacters)) { array_push($uniqueCharacters, $character); } } var_dump($uniqueCharacters); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
array(6) { [0]=> string(12) "アーデン" [1]=> string(12) "アラネア" [2]=> string(18) "ルナフレーナ" [3]=> string(15) "ノクティス" [4]=> string(6) "ソル" [5]=> string(12) "レイヴス" } |
つまり…
foreach文で配列に格納されている要素数分、処理を繰り返す。
in_arrayで、配列の要素と、一意となる値のみの配列を指定する。
- 初回は配列は空、in_arrayで評価するとfalseになる為、!in_arrayとする。
- 2回目以降は、既に値の入りつつある配列との比較になり、入っていればfalseを返す為、重複部のみarray_pushをしない。
array_pushで、配列に要素を、一意となる値のみの配列に格納する。
上記は飽くまでも一例だが、foreach文と合わせて「この配列にこの値入ってるか?」を判別するときに使い勝手のよい関数の印象。
参照
独習PHP
公式
PHPを効率的に学習したい場合
スクールを活用するのも有効

PHPを効率的に学習したい場合、スクールを活用するのも有効です。
転職を視野に入れている方、将来に向けて学習を進めている学生の方など、良かったら説明を聴いてみてはいかがでしょうか(説明会の参加は無料です)。
他のスクールについては下記の記事にまとめてあります。他のスクールについても視野に入れたい場合、参考になるかと思います。
