foreach ループ
CoddyのPHPジャーニー「基礎」セクションの一部 — レッスン 49/71。
配列を扱う際には、各要素を1つずつ順番に処理する必要があることがよくあります。インデックスカウンタを使った for ループを使用することもできますが、PHP はよりクリーンな解決策を提供します:foreach ループです。
foreach ループは、配列のイテレーションのために特別に設計されています。それはカウントを自動的に処理し、各要素への直接アクセスを提供します。
<?php
$fruits = ["apple", "banana", "cherry"];
foreach ($fruits as $fruit) {
echo $fruit . "\n";
}
?>これが出力されます:
apple
banana
cherry構文はシンプルです:foreach ($array as $item)。各イテレーションで、配列の次の要素が$itemに割り当てられ、ループの本体内でそれを使用できます。
これを for ループを使って同じ結果を達成する場合と比較してください:
<?php
$fruits = ["apple", "banana", "cherry"];
for ($i = 0; $i < count($fruits); $i++) {
echo $fruits[$i] . "\n";
}
?>foreach バージョンはより短く、読みやすいです。インデックス変数を管理する必要がなく、配列の長さを気にする必要もありません—PHP がすべてを処理してくれます。
チャレンジ
簡単カンマ区切りの数字のリストを含む1行の入力を読み取ります(例: 10,25,5,30,15)。
foreach ループを使用して配列をイテレートし、すべての数字の合計を計算します。合計を出力します。
例 1:
入力が 10,25,5,30,15 の場合、出力は次のようになります:
85例 2:
入力が 1,2,3,4,5 の場合、出力は次のようになります:
15例 3:
入力が 100,200,300 の場合、出力は次のようになります:
600チートシート
foreach ループは、インデックス変数を管理せずに配列をイテレートするために特別に設計されています。
基本構文:
<?php
foreach ($array as $item) {
// use $item
}
?>例:
<?php
$fruits = ["apple", "banana", "cherry"];
foreach ($fruits as $fruit) {
echo $fruit . "\n";
}
?>これは、インデックスカウンターを使用した for ループを使用するよりもクリーンで、PHP が自動的にカウントと配列の長さを処理します。
自分で試してみよう
<?php
// 入力の読み取り
$input = trim(fgets(STDIN));
$numbers = explode(',', $input);
// TODO: foreachループを使用して合計を計算するコードを以下に記述してください
$sum = 0;
// 結果の出力
echo $sum;
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators