カテゴリ: PHP 更新日: 2026/09/02

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(アレイ・サーチ)関数です。

「in_array」は「ある・ない」の二択でしたが、この関数は「〇番目に見つかったよ!」と場所まで教えてくれるのが特徴です。例えば、ユーザーリストの中から特定の名前を見つけ出し、その人のIDや詳細データを取得したい時などに重宝します。

イメージ図: 出席番号が並んだ名簿から、特定の名前を探して「あなたの出席番号は〇番です」と案内するようなイメージです。

<?php
// フルーツのリスト(0番目:りんご、1番目:みかん、2番目:バナナ)
$fruits = ["りんご", "みかん", "バナナ"];

// 「みかん」が何番目に入っているか探します
$key = array_search("みかん", $fruits);

// 見つかった場合はその番号が表示されます
if ($key !== false) {
    echo "みかんは " . $key . " 番目にあります!";
} else {
    echo "見つかりませんでした。";
}
?>

PHPの配列は「0」から数え始めるルールがあるため、このコードを実行すると「みかんは 1 番目にあります」と表示されます。ここで重要なのが、if ($key !== false) という書き方です。

もし1番最初(0番目)に見つかった場合、PHPでは「0」は「false(なし)」と勘違いされやすいため、「型まで含めて厳密にfalseではないこと」を確認する !== を使うのが、バグを出さないためのプロのテクニックです。

5. array_searchの実行結果と「0番目」の注意点

5. array_searchの実行結果と「0番目」の注意点
5. array_searchの実行結果と「0番目」の注意点

先ほどの「みかん」を探すプログラムを実行すると、次のような結果が表示されます。


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

ここで「あれ?みかんは2番目じゃないの?」と思った方もいるかもしれません。実は、プログラミングの世界(PHPの配列)では、数は「0」から数え始めるというルールがあります。

配列の数え方のイメージ:
[0] りんご(1番目)
[1] みかん(2番目)
[2] バナナ(3番目)

そのため、array_searchが返す「1」という数字は、現実世界の2番目を指していることになります。また、この関数は「もし見つからなかった場合」には false という値を返してくれます。

実務では、この「場所(キー)」を使って、「見つけたデータの隣にある価格データを書き換える」といった、特定のデータにピンポイントでアクセスして操作する処理によく使われます。データの有無だけでなく、その後の編集・削除につなげたい時に非常に役立つ関数です。

6. array_filterで特定の条件に合うデータだけを抽出する

6. array_filterで特定の条件に合うデータだけを抽出する
6. array_filterで特定の条件に合うデータだけを抽出する

最後にご紹介するのは、配列の中から「特定の条件を満たすものだけ」を魔法のように一気に取り出せるarray_filter(アレイ・フィルター)関数です。

読み方はその名の通り「アレイ・フィルター」。たくさんのデータが入った配列をフィルター(ろ過)にかけて、自分が必要なデータだけを「こし取る」ようなイメージで使われます。これまで解説した関数が「1つの値」を探すものだったのに対し、こちらは「条件に合う複数の値」をまとめて扱いたい時に非常に便利です。

イメージ図:
たくさんの野菜が入ったカゴから、「重さが100g以上のものだけ」や「赤いものだけ」を選別して、別の新しいカゴに移し替えるような作業を自動で行ってくれます。

<?php
// テストの点数リスト
$scores = [45, 80, 60, 95, 30];

// 「60点以上(合格)」の人の点数だけを抽出します
$passed_scores = array_filter($scores, function($score) {
    // 60以上の数値であれば true(残す)を返す
    return $score >= 60;
});

// 結果を表示
print_r($passed_scores);
?>

このコードでは、$scoresという配列の中から、60以上の数字だけを抽出して新しい配列$passed_scoresを作っています。プログラミング未経験の方には少し難しく見えるかもしれませんが、function($score) の部分で「どんな条件でフィルターをかけるか」を自由に決めることができるのが、この関数の最大の魅力です。

例えば、ECサイトで「1,000円以下の商品だけ表示する」とか、SNSで「今日投稿された記事だけを抜き出す」といった「絞り込み機能」を作る際に、このarray_filterは欠かせない存在となっています。

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で返ります。

in_array関数で数値と文字列の区別をするにはどうしたらいいですか?

in_array関数の第3引数にtrueを指定すると、型も含めて厳密に比較できます。数値と文字列を区別したいときはtrueを付けましょう。
コメント
コメント投稿は、ログインしてください

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

PHP の配列の記事一覧へ
新着記事
New1
Claude
ClaudeにPHPデバッグを相談するコツ!原因候補を仮説に分けて確認する質問例
New2
Python
PythonのCLIで対話型メニューを作る方法(prompt_toolkit)
New3
ChatGPT
ChatGPTでPHPコードを理解する方法!読めない処理をわかりやすく質問しよう
New4
PHP
PHP の定数(define, const)を使った設定方法を徹底解説!
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.2
Java&Spring記事人気No2
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.3
Java&Spring記事人気No3
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.4
Java&Spring記事人気No4
Python
PythonでSQLiteを使う方法を完全ガイド!初心者でもわかるデータベース基本操作
No.5
Java&Spring記事人気No5
Python
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.6
Java&Spring記事人気No6
Python
Pythonのシェルスクリプトを自動実行する方法(cron & Task Scheduler)
No.7
Java&Spring記事人気No7
Claude
ClaudeにPHPリファクタリングを相談するコツ!目的・前提・制約を仕様メモにまとめるコツ
No.8
Java&Spring記事人気No8
PHP
PHPのMVCパターンを完全解説!初心者でもわかるModel・View・Controller