カテゴリ: PHP 更新日: 2026/05/07

PHPで配列を検索・フィルターする方法!初心者向けにin_array・array_filter・array_searchをやさしく解説

PHP の配列の検索・フィルター(in_array, array_filter, array_search)
PHP の配列の検索・フィルター(in_array, array_filter, array_search)

先生と生徒の会話形式で理解しよう

生徒

「PHPで配列の中から特定の値を探したり、条件に合うものだけを取り出す方法ってありますか?」

先生

「あるよ!PHPではin_arrayarray_searcharray_filterという便利な関数を使って配列を検索・フィルターできるんだ。」

生徒

「なんだか難しそうですが、わかるようになりますか?」

先生

「もちろん!初心者でもイメージしやすいように、身近なたとえや図解的な説明で順番に説明していくね!」

1. 配列の中に値があるか確認するin_array関数

1. 配列の中に値があるか確認するin_array関数
1. 配列の中に値があるか確認するin_array関数

PHPプログラミングで「あるデータがリストの中に含まれているか?」を瞬時に判定したいときに欠かせないのが、このin_array(イン・アレイ)関数です。

「in(~の中に)」「array(配列)」という名前の通り、特定のキーワードが配列という箱の中に存在するかどうかをチェックする役割を持っています。初心者の方が最初につまずきやすい「データの存在確認」を、たった1行で解決できる非常に便利な機能です。

イメージ図: カゴ(配列)の中に「リンゴ」が入っているか手を突っ込んで探すようなイメージです。見つかれば「あった!(true)」、なければ「なかった(false)」という結果を教えてくれます。

<?php
// フルーツのリスト(配列)を用意します
$fruits = ["りんご", "バナナ", "オレンジ"];

// 「バナナ」が配列の中にあるか探します
if (in_array("バナナ", $fruits)) {
    echo "バナナは見つかりました!";
} else {
    echo "リストにはありませんでした。";
}
?>

このサンプルでは、$fruitsという変数の中に「バナナ」という文字列があるかを調べています。配列の中に一致する値があれば true(真)を返すため、if文と組み合わせて「値があったときだけ特定の処理をする」といった使い方が一般的です。

例えば、会員サイトのログインチェックや、おみくじの結果判定、選択したメニューが有効かどうかを調べる際など、実務のあらゆる場面で活用されています。

2. in_arrayの実行結果と具体的な動作

2. in_arrayの実行結果と具体的な動作
2. in_arrayの実行結果と具体的な動作

先ほどのフルーツリストを使ったコードを実行すると、画面には次のように表示されます。


バナナは見つかりました!

プログラミング未経験の方でもイメージしやすいように、別の例でも考えてみましょう。例えば、「クラスの名簿(配列)」の中に「自分の名前」があるかどうかを確認する場合です。


<?php
// クラスの出席名簿
$members = ["田中", "佐藤", "鈴木", "高橋"];

// 「佐藤」さんが名簿に載っているかチェック
if (in_array("佐藤", $members)) {
    echo "佐藤さんは名簿に登録されています。";
}
?>

このように、in_arrayは「データがそこにあるか?」という「YesかNoか(trueかfalseか)」の結果だけを知りたい時に最適な関数です。戻り値がシンプルなので、そのままif文の条件式に入れて「データがある場合のみ、このメッセージを出す」といった直感的なプログラムを書くことができます。

難しい処理を書かなくても、PHPが裏側で配列の中身を一つずつ自動でチェックしてくれるので、コードが非常に読みやすく、ミスも減らすことができるのが大きなメリットです。

3. in_arrayの活用シーンと初心者がハマる注意点

3. in_arrayの活用シーンと初心者がハマる注意点
3. in_arrayの活用シーンと初心者がハマる注意点

in_arrayは、Webサービス開発において「ユーザーの入力値が正しい選択肢に含まれているか」をチェックするバリデーション処理で頻繁に使用されます。

例えば、アンケートの回答が「はい」「いいえ」のいずれかであるかを確認したり、セレクトボックスで選ばれた値が改ざんされていないかを判定したりする際に非常に強力なツールとなります。

ここが落とし穴!「厳密な比較」を忘れずに
PHPのin_arrayには、実は「型をどこまで正確にチェックするか」という重要な設定があります。デフォルトでは「数字の2」と「文字の"2"」を同じものとして扱ってしまいます。

予期せぬ動作(バグ)を防ぐためには、第3引数に true を指定するのがプロの書き方です。これにより、データの中身だけでなく「数値なのか文字列なのか」という型まで厳密にチェック(=== 比較)できるようになります。


<?php
// 数値が入った配列
$numbers = [1, 2, 3];

// 【注意!】第3引数なし(デフォルト)
// 文字列の "2" ですが、PHPが気を利かせて数値の 2 と同じと判断してしまいます
var_dump(in_array("2", $numbers)); // 結果:true

// 【おすすめ!】第3引数に true を指定(厳密な型チェック)
// 「数値の2」と「文字列の"2"」を別物として扱うので、より安全なプログラムになります
var_dump(in_array("2", $numbers, true)); // 結果:false
?>

このように、初心者のうちは「in_arrayを使うときは、最後に true をつける」という癖をつけておくと、将来的にデータの型が原因で起こる複雑なエラーを未然に防ぐことができます。実務でも「厳密な比較」はセキュリティや正確性の観点から強く推奨されています。

4. array_searchで値の場所(キー)を探す

4. array_searchで値の場所(キー)を探す
4. array_searchで値の場所(キー)を探す

array_search(アレイ・サーチ)は、PHPで配列の中から特定の値の「キー(位置)」を探す関数です。

見つかればそのキーを返し、見つからなければfalseが返ります。


<?php
$fruits = ["りんご", "みかん", "バナナ"];
$key = array_search("みかん", $fruits);

if ($key !== false) {
    echo "みかんは {$key} 番目にあります";
}
?>

このコードでは、「みかん」は配列の1番目(0から数える)にあるので「1」と表示されます。

5. array_searchの実行結果を確認

5. array_searchの実行結果を確認
5. array_searchの実行結果を確認

みかんは 1 番目にあります

array_searchは、値の「場所」を知りたいときに便利です。

6. array_filterで配列を条件でフィルター

6. array_filterで配列を条件でフィルター
6. array_filterで配列を条件でフィルター

array_filter(アレイ・フィルター)は、配列の中から「条件に合うものだけ」を残して、新しい配列を作る関数です。

読み方は「アレイ・フィルター」、つまり「配列をこし取る・選び出す」という意味です。


<?php
$numbers = [1, 2, 3, 4, 5];

$even = array_filter($numbers, function($n) {
    return $n % 2 === 0;
});

print_r($even);
?>

この例では、偶数(2で割り切れる数字)だけを抽出しています。

7. array_filterの結果を確認しよう

7. array_filterの結果を確認しよう
7. array_filterの結果を確認しよう

Array
(
    [1] => 2
    [3] => 4
)

このように、array_filterを使えば、配列の中身を条件で絞り込めます。

「一定の基準に合うデータだけを使いたい」ときに便利な関数です。

8. 実務での使い分けと応用例

8. 実務での使い分けと応用例
8. 実務での使い分けと応用例

実際の開発では、たとえば次のように使い分けます:

  • in_array → データが存在するかどうかの確認
  • array_search → データの場所(キー)を知りたい
  • array_filter → 条件に合うデータだけ残したい

例えばアンケート結果で「回答済みのユーザーだけを取り出す」「好きな果物が選ばれているか確認する」など、実用的な場面で使える機能です。

まとめ

まとめ
まとめ

配列検索の基礎をしっかり理解しよう

PHPで配列を検索したり条件で絞り込んだりする作業は、実務でも学習でもとてもよく登場する大切な知識です。 配列という仕組みは、情報を順番に並べて管理するための基本的な入れ物であり、その中から特定の値を見つけ出したり、 条件に一致するデータを選び出すことは、データ処理のあらゆる場面で欠かせない操作になります。 たとえばアンケート結果の整理、ユーザー一覧の確認、タグ情報からの検索、選択肢項目のチェックなど、 どんなジャンルのプログラムでも配列の検索やフィルターは自然と必要になるものです。 今回学んだin_array、array_search、array_filterはPHPの中でも特に使用頻度が高い関数であり、 これらを丁寧に使い分けられるようになることで、配列操作の幅が大きく広がり、 初心者でもわかりやすいロジックを書けるようになります。

in_arrayは「値が存在するか」を調べるための関数であり、配列の中に特定の値が含まれているかどうかを簡単に確認できます。 array_searchは「どこにあるか」を調べる関数であり、 実務ではキーを取得して次の処理につなげるための重要な役割を持っています。 そしてarray_filterは配列を条件で絞り込むための強力な関数であり、 大量のデータから必要な項目だけを取り出したいときにとても役立ちます。 それぞれの関数は用途が違い、特徴も異なるため、今回の学習で学んだように 「使う目的」から逆算して選ぶ習慣を身につけておくと良いでしょう。

実践で役立つサンプルコード

実際の開発現場では、ただ関数を知っているだけでなく、 実用的な組み合わせで使いこなせることがとても大切です。 以下に、今回学んだ要素を組み合わせたサンプルコードを示します。 配列の中に存在するかどうかの確認、条件に合うデータの抽出、 キーの取得まで一連の流れが自然につながるように整理しています。


<?php
$items = [
    ["name" => "りんご", "type" => "果物"],
    ["name" => "にんじん", "type" => "野菜"],
    ["name" => "バナナ", "type" => "果物"],
    ["name" => "たまねぎ", "type" => "野菜"],
];

$fruits = array_filter($items, function($item) {
    return $item["type"] === "果物";
});

$names = array_column($items, "name");

if (in_array("バナナ", $names)) {
    $key = array_search("バナナ", $names);
    echo "バナナは {$key} 番目の要素として登録されています";
}
?>

このように、配列の中にあるデータを条件で選び出しながら、 必要に応じて値が存在するかどうかをチェックしたり、 特定のデータがどの位置にあるのかを調べるという処理が自然に行えるようになります。 実際の業務でもこのような書き方は頻繁に登場するため、 ぜひ今回のサンプルを参考にしながら、 自分のコードに合わせて応用してみてください。

使いどころを意識した配列処理の考え方

配列を扱うときの考え方として大切なのは、 「どんな情報を取り出したいのか」を明確にすることです。 配列操作は見た目のコードが短くても、その裏側では意外と複雑な処理が行われていることがあります。 しかし今回のin_arrayやarray_filterのような関数を理解しておけば、 配列の中身を確認したり、条件に合う項目だけを抽出したりする処理を自然に書けるようになります。 またarray_searchのようにキーを取得できる関数を使うと、 配列を編集したい場面や該当データを別の処理で再利用したい場面でもとても便利です。

特にPHPの開発では、配列をそのままデータベースの代わりに使って処理を進めるケースも多く、 一時的な入力データの管理や、フォームの選択肢管理、APIレスポンスの整形など、 配列を加工しながら処理する場面は後を絶ちません。 だからこそ、今回の関数をしっかり理解することが、 後のステップで役立つ基礎力となります。

学習理解を深める先生と生徒の振り返り会話

生徒「今回の配列検索の勉強で、どの関数がどんな場面で使えるかイメージしやすくなりました!」

先生「うん、それはとても良いことだよ。特にin_arrayとarray_searchはよく使うから自然に書けるようにしておこうね。」

生徒「array_filterの使い方も面白かったです。条件を関数で書けるところが便利ですね!」

先生「そうだね。配列を選び取る考え方が身につくと、もっと複雑な処理も簡単に書けるようになるよ。」

生徒「今日の内容は実務でも使えそうなので、もっと練習して身につけたいです!」

先生「その意欲があれば大丈夫。次は配列の並び替えや結合なども学んでいくと、さらに理解が深まるよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

PHPのin_array関数とは何ですか?どんなときに使うべきですか?

PHPのin_array関数は、指定した値が配列の中に存在するかどうかを調べるための関数です。たとえばユーザーの入力が有効な選択肢に含まれているか確認したいときなどに使います。

PHPのin_array関数の使い方を初心者向けに簡単に教えてください

配列と検索したい値をin_arrayに渡すだけで、値が含まれているかどうかを調べることができます。結果はtrueまたはfalseで返ります。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
PHP
PHPでセッションを使ってフォーム入力を保持する方法を解説!初心者向けステップバイステップ
New2
PHP
PHP の文字列の基本操作(連結・切り出し・長さ)の使い方
New3
PHP
PHPのメール送信でSPF・DKIM認証設定を完全解説!初心者でもわかるメール認証の基本
New4
Python
PythonでAPIのパフォーマンスを向上させる方法!キャッシュ活用を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.2
Java&Spring記事人気No2
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.3
Java&Spring記事人気No3
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.5
Java&Spring記事人気No5
PHP
PHPのHTMLメールの作成方法を完全ガイド!初心者でもわかるメール送信の基本
No.6
Java&Spring記事人気No6
Python
Pythonで2次元リストを作成・操作する方法(リストのリスト)
No.7
Java&Spring記事人気No7
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.8
Java&Spring記事人気No8
Python
Pythonの例外を発生させる方法を完全解説!raise文の使い方を初心者向けにやさしく説明