条件で検索する
テクノロジ系 / 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],
];age が 20 以上 の人の名前だけを、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) { ... } }>=は「以上」(超ではない)