0Pricing
PHP Academy · レッスン

foreachとループ制御

foreachで配列を反復処理し、breakとcontinueを使用します。

「foreachとループ制御」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。

foreach: 配列のループ

foreach は、PHPで配列やオブジェクトを反復処理する標準的な方法です。インデックスを手動で管理する必要はありません。

インデックス付き配列での foreach

インデックス付き配列の値を反復処理します。

<?php
$fruits = ['apple', 'banana', 'cherry'];

foreach ($fruits as $fruit) {
    echo $fruit . PHP_EOL;
}
// apple
// banana
// cherry

キー => 値を使う foreach

各反復でキーと値の両方を取得します。

<?php
$person = ['name' => 'Alice', 'age' => 30, 'city' => 'London'];

foreach ($person as $key => $value) {
    echo "$key: $value" . PHP_EOL;
}
// name: Alice
// age: 30
// city: London

ネストした foreach

配列の配列を反復処理します(データベースの結果セットなど)。

<?php
$users = [
    ['name' => 'Alice', 'role' => 'admin'],
    ['name' => 'Bob',   'role' => 'user'],
];

foreach ($users as $user) {
    echo $user['name'] . ' is ' . $user['role'] . PHP_EOL;
}

配列要素の変更

foreach 内で配列の値を変更するには、参照 &$value を使用します。

<?php
$prices = [10, 20, 30];

foreach ($prices as &$price) {
    $price *= 1.1;  // 10% price increase
}
unset($price);  // always unset after reference loop!

print_r($prices); // [11, 22, 33]

foreach での break

break を使うと、foreach ループを途中で終了できます。

<?php
$ids = [1, 2, 3, 4, 5];
$target = 3;

foreach ($ids as $id) {
    if ($id === $target) {
        echo 'Found: ' . $id;
        break;
    }
}

foreach での continue

continue を使うと、特定の項目をスキップできます。

<?php
$numbers = [1, 2, 3, 4, 5, 6];

foreach ($numbers as $n) {
    if ($n % 2 === 0) continue;  // skip evens
    echo $n . ' ';  // 1 3 5
}

foreach での list()

list() または省略記法の [] を使うと、内側の配列をその場で分割代入できます。

<?php
$coords = [[10, 20], [30, 40], [50, 60]];

foreach ($coords as [$x, $y]) {
    echo "x=$x, y=$y" . PHP_EOL;
}
// x=10, y=20
// x=30, y=40

オブジェクトの反復処理

foreach はオブジェクトにも使用でき、デフォルトでは public プロパティを反復処理します。

<?php
class Config {
    public string $host = 'localhost';
    public int    $port = 3306;
    public string $db   = 'myapp';
}

foreach (new Config() as $key => $val) {
    echo "$key = $val" . PHP_EOL;
}

foreach の対象としての Generator

PHPのジェネレーターを使うと、すべてをメモリに読み込まずに大規模なデータセットを反復処理できます。

<?php
function range100(): Generator {
    for ($i = 1; $i <= 100; $i++) {
        yield $i;
    }
}

foreach (range100() as $num) {
    if ($num > 5) break;
    echo $num . ' ';  // 1 2 3 4 5
}

array_walk と foreach

array_walk は各要素にコールバックをその場で適用します。単純な変換では foreach の代替として使用できます。

<?php
$names = ['alice', 'bob', 'carol'];

array_walk($names, function (&$name) {
    $name = ucfirst($name);
});

print_r($names); // ['Alice', 'Bob', 'Carol']

クイックチェック

foreach で配列を参照渡しで反復処理した後、何を行うべきですか。

まとめ: foreach とループ制御

重要なポイントです。

  • foreach ($arr as $val) は値を処理します
  • foreach ($arr as $key => $val) はキーと値のペアを処理します
  • その場で変更するには &$val 参照を使用し、必ず後で unset します
  • break と continue は foreach 内で使用できます
  • [$a, $b] で内側の配列を分割代入できます
  • ジェネレーターを使うと、foreach で巨大なデータセットをメモリ効率よく処理できます

よくある質問

「foreachとループ制御」レッスンは無料ですか?

はい。「foreachとループ制御」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。

「foreachとループ制御」で何を学びますか?

foreachで配列を反復処理し、breakとcontinueを使用します。 ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

PHP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「foreachとループ制御」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPHP Academyレッスンでコードを書いて実行できますか?

はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. if、elseif、else
  2. SwitchとMatch文
  3. forとwhileループ
  4. foreachとループ制御
← PHP Academyに戻る