概要

配列を扱う時に避けて通れないのが 「この値 (キー) は入ってる?」を調べる検索処理。PHP には用途に応じて 3 つの関数が用意されていて、何を知りたいかで使い分ける。値の有無を真偽で知りたい なら in_array($needle, $arr)見つかった位置 (キーまたは添字) を取りたい なら array_search($needle, $arr)キーが存在するかを知りたい なら array_key_exists($key, $arr) を使う。

注意したいのが、それぞれ 見ているものが違う こと。in_arrayarray_search を探すのに対し、array_key_existsキー を探す。さらに array_key_exists は値が null でもキーが存在すれば true を返すという、isset との違いがある。isset($arr['key']) は値が null だと false を返すので、「null も含めて存在判定したい」時は array_key_exists を選ぶ。

そして実務で必ず引っかかるのが 比較の厳密さin_array('1', [1, 2, 3]) はデフォルトで true になる ('1'1 が等しい扱い)。これを嫌う場合は 第 3 引数 true を渡して厳密比較 (===) に切り替える。文字列と数値が混ざる配列を検索する時は、第 3 引数を意識しないと 意図しないヒットでバグになる ので、ここは強く覚えておく。ドリル 2 問で in_arrayarray_search の最小限の挙動を確かめる。

学習目標

ドリル

no 内容
01 in_array で値の有無を判定
02 array_search で見つかった位置 (添字) を出力

演習: ドリル 01 — in_array で有無を判定

問題

以下の配列が与えられています。

$fruits = ['apple', 'banana', 'cherry', 'date'];

in_array を使って 'banana' が含まれているかと 'melon' が含まれているかをそれぞれ判定し、結果を以下のように 2 行で出力してください。

期待される出力:

ある
ない

ヒント

演習: ドリル 02 — array_search で位置を取る

問題

以下の配列が与えられています。

$fruits = ['apple', 'banana', 'cherry', 'date'];

array_search を使って 'cherry' の添字を取り出し、1 行で出力してください。

期待される出力:

2

ヒント

この章を AI に聞く

  1. 「ch08 — 配列の中を検索する」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch08 — 配列の中を検索する」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch08 — 配列の中を検索する」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch08 — 配列の中を検索する」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE