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

条件で検索する

テクノロジ系 / array-multi (多次元配列・オブジェクトリスト・CSV)

条件で検索する

Lesson 6 / Chapter 10

foreach + if で絞り込む

<?php
$users = [
    ['name' => '太郎', 'age' => 20],
    ['name' => '花子', 'age' => 25],
    ['name' => '次郎', 'age' => 18],
];
foreach ($users as $user) {
    if ($user['age'] >= 20) {
        echo $user['name'] . "\n";
    }
}

実行結果:

太郎
花子
  • 全件を 1 件ずつ見て、条件を満たすときだけ出力
  • 「フィルタ」と呼ばれるパターン

複数条件は && ||

<?php
foreach ($users as $user) {
    // 20 歳以上 かつ 30 歳未満
    if ($user['age'] >= 20 && $user['age'] < 30) {
        echo $user['name'] . "\n";
    }
}
  • && (かつ) || (または) で複数の条件をつなげる
  • 比較演算子は conditional トピックで学んだものをそのまま使える

「最初に見つかったものだけ」が欲しいなら break

<?php
foreach ($users as $user) {
    if ($user['age'] >= 20) {
        echo $user['name'] . "\n";
        break;   // 最初に見つかった 1 件で終了
    }
}

実行結果:

太郎
  • 1 件だけ欲しい場合は break でループを抜ける
  • loop トピックで学んだ break をここでも使える

キーが存在するかチェック

<?php
foreach ($users as $user) {
    if (isset($user['age']) && $user['age'] >= 20) {
        echo $user['name'] . "\n";
    }
}
  • 一部の要素に age が無い可能性があるなら isset で先に確認
  • いきなり $user['age'] を比較すると、キーが無い件で警告が出る

このチャプターでできるようになること

foreach + if で条件に合う要素だけ取り出せる

&& || で複数の条件をつなげられる

break で最初の 1 件だけ取り出せる

isset でキー存在を先に確認できる

→ ドリルへ

考えてみよう

既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。

ドリル 01 — 年齢 20 以上の人を出力

問題

次のデータが与えられています。

$users = [
    ['name' => '太郎', 'age' => 20],
    ['name' => '花子', 'age' => 25],
    ['name' => '次郎', 'age' => 18],
    ['name' => '三郎', 'age' => 30],
];

age20 以上 の人の名前だけを、1 行ずつ上から順に出力してください。

期待される出力:

太郎
花子
三郎

採点

php scripts/grade.php topics/array-multi/ch10-find-by-key/drill/01-find-by-age/

ヒント

  • foreach ($users as $user) { if ($user['age'] >= 20) { ... } }
  • >= は「以上」(超ではない)