配列を検索する
テクノロジ系 / array-assoc (連想配列・foreach・ソート)
配列を検索する
Lesson 5 / Chapter 8
in_array — 値が含まれるか (真偽)
<?php
$fruits = ['apple', 'banana', 'cherry'];
if (in_array('banana', $fruits)) {
echo "ある\n";
} else {
echo "ない\n";
}実行結果:
ある
- 戻り値は
true / false - 「あるか・ないか」だけ知りたい時に使う
array_search — 見つかった位置を取る
<?php
$fruits = ['apple', 'banana', 'cherry'];
$pos = array_search('banana', $fruits);
echo $pos . "\n"; // 1- 戻り値は キー (添字配列なら 0,1,2... / 連想配列ならキー名)
- 見つからない時は
falseが返る (※真偽は===で比較すること)
連想配列でも array_search が使える
<?php
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];
$key = array_search(90, $scores);
echo $key . "\n"; // science- 戻り値はキー名 (
science) - 「点数 90 を取った科目を知りたい」のような用途
array_key_exists — キーがあるか
<?php
$person = ['name' => '太郎', 'age' => 20];
if (array_key_exists('age', $person)) {
echo "age あり\n";
}in_arrayは 値 を、array_key_existsは キー を探すissetでも似たことができるが、値がnullのときの挙動が違う
このチャプターでできるようになること
✅ in_array で値の有無を判定できる
✅ array_search で見つかった位置を取れる
✅ array_key_exists でキーの存在を判定できる
✅ 「値を探す」「キーを探す」を使い分けられる
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 01 — in_array で有無を判定
問題
以下の配列が与えられています。
$fruits = ['apple', 'banana', 'cherry', 'date'];
in_array を使って 'banana' が含まれているかと 'melon' が含まれているかをそれぞれ判定し、結果を以下のように 2 行で出力してください。
- 含まれていれば
ある - 含まれていなければ
ない
期待される出力:
ある ない
採点
php scripts/grade.php topics/array-assoc/ch08-array-search/drill/01-in-array/
ヒント
if (in_array('banana', $fruits)) { echo "ある\n"; } else { echo "ない\n"; }- 同じ判定を
'melon'でも行う
ドリル 02 — array_search で位置を取る
問題
以下の配列が与えられています。
$fruits = ['apple', 'banana', 'cherry', 'date'];
array_search を使って 'cherry' の添字を取り出し、1 行で出力してください。
期待される出力:
2
採点
php scripts/grade.php topics/array-assoc/ch08-array-search/drill/02-search-position/
ヒント
$pos = array_search('cherry', $fruits);echo $pos . "\n";- 添字配列なので戻り値は数値 (0,1,2,3 のいずれか)