概要
オブジェクトリスト (ch09 で扱った連想配列の配列) から「条件に合う要素だけ取り出す」のは、データを使う上で必須の操作。「年齢 20 以上のユーザー」「在庫切れの商品」「未読のメッセージ」など、現実のアプリで毎回出てくるパターンだ。書き方は単純で、foreach で 1 件ずつ取り出し、if で条件を判定して、合致するものだけ処理する という素朴な線形検索になる。
基本形は foreach ($users as $user) { if ($user['age'] >= 20) { echo $user['name'] . "\n"; } }。foreach の中に if を入れる だけで、データベースの WHERE 句に相当する絞り込みができる。条件は >= (以上) / === (厳密一致) / && (かつ) など組み合わせて自由に書ける。複雑な条件でも 1 件ずつ判定すれば必ず正しい結果が出るので、まずはこの素朴な書き方を確実に書けるようになる。
慣れてくると array_filter でも書ける。array_filter($users, fn($u) => $u['age'] >= 20) のようにアロー関数で条件を書くと、絞り込み結果の配列が返ってくる。ただし最初は foreach + if で「条件を満たすものだけ何かをする」というロジックを 自分の手で書く 経験を積むほうが、後で array_filter を読んだ時の理解が深まる。線形検索は計算量 O(N) だが、ch12 や実務でも十分使えるパターン。
学習目標
- オブジェクトリストから条件に合う要素だけ取り出せる
foreach+ifで「条件を満たすものだけ処理する」パターンを書ける- 検索条件 (
>====など) を組み合わせられる
ドリル
| no | 内容 |
|---|---|
| 01 | 年齢 20 以上の人の名前だけ出力 |
📝 演習: ドリル 01 — 年齢 20 以上の人を出力
問題
次のデータが与えられています。
$users = [
['name' => '太郎', 'age' => 20],
['name' => '花子', 'age' => 25],
['name' => '次郎', 'age' => 18],
['name' => '三郎', 'age' => 30],
];age が 20 以上 の人の名前だけを、1 行ずつ上から順に出力してください。
期待される出力:
太郎
花子
三郎ヒント
foreach ($users as $user) { if ($user['age'] >= 20) { ... } }>=は「以上」(超ではない)