採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

配列を検索する

テクノロジ系 / 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 のいずれか)