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

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"; で末尾スペースを落として出力