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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- if、elseif、else
- SwitchとMatch文
- forとwhileループ
- foreachとループ制御