foreach で値を取り出す
テクノロジ系 / array-assoc (連想配列・foreach・ソート)
foreach で値を取り出す
Lesson 5 / Chapter 3
連想配列も foreach で順番に処理できる
<?php
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];
foreach ($scores as $v) {
echo $v . "\n";
}実行結果:
80 70 90
as $vで各要素の 値 が順に$vに入る- キーは使わない場合の書き方
取り出す順番は「入れた順」
<?php
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];
foreach ($scores as $v) {
echo $v . "\n";
}- 連想配列は 挿入順 を覚えている
- 上のコードは
80 → 70 → 90の順で出力される - 「キーの ABC 順」ではないので注意 (並び替えは ch06,ch07)
値を集計するパターン
<?php
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];
$sum = 0;
foreach ($scores as $v) {
$sum += $v;
}
echo $sum . "\n"; // 240- ループの 外 で初期値を 0 にする
- ループの中で
$sum += $v; - array-basic トピックの添字配列の合計と書き方は同じ
文字列の連想配列も同じ
<?php
$labels = [
'morning' => 'おはよう',
'noon' => 'こんにちは',
'night' => 'こんばんは',
];
$joined = '';
foreach ($labels as $v) {
$joined .= $v . ' ';
}
echo trim($joined) . "\n";実行結果:
おはよう こんにちは こんばんは
.=は文字列の追記- 末尾の余分なスペースは
trimで削る
このチャプターでできるようになること
✅ foreach ($arr as $v) で値だけを取り出せる
✅ 値の出力・合計・連結ができる
✅ 取り出し順は挿入順だと理解できる
✅ 添字配列と書き方が同じだと分かる
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 01 — foreach で全要素を出力
問題
以下の連想配列が与えられています。
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];foreach で値だけを取り出し、上から順に 1 行ずつ出力してください。
期待される出力:
80 70 90
採点
php scripts/grade.php topics/array-assoc/ch03-foreach-value/drill/01-print-all/
ヒント
foreach ($scores as $v) { echo $v . "\n"; }
ドリル 02 — foreach で合計
問題
以下の連想配列が与えられています。
$scores = [
'math' => 80,
'english' => 70,
'science' => 90,
];foreach で全ての値を合計し、その合計を 1 行で出力してください。
期待される出力:
240
採点
php scripts/grade.php topics/array-assoc/ch03-foreach-value/drill/02-sum/
ヒント
- ループの外で
$sum = 0; - ループの中で
$sum += $v; - 最後に
echo $sum . "\n";
ドリル 03 — foreach で文字列連結
問題
以下の連想配列が与えられています。
$labels = [
'morning' => 'おはよう',
'noon' => 'こんにちは',
'night' => 'こんばんは',
];foreach で全ての値を取り出し、半角スペース 1 個区切りで連結して 1 行で出力してください。
末尾に余分なスペースは入れないでください。
期待される出力:
おはよう こんにちは こんばんは
採点
php scripts/grade.php topics/array-assoc/ch03-foreach-value/drill/03-concat/
ヒント
- 空文字
$joined = '';を用意 $joined .= $v . ' ';で追記echo trim($joined) . "\n";で末尾スペースを落として出力