【PHP】foreach文で配列や連想配列の要素数に合わせて繰り返し処理を行う!

(この記事は2022年9月18日に投稿されました。)

PHPで繰り返し処理を行う方法として、foreach文があります。

foreach文とは、配列の中に格納されている要素の数だけ繰り返し処理を行う文法になります。

PHPの繰り返し処理はforeach文の他にもfor文やwhile文、do〜while文があり、どの文法を使用しても、配列の要素を取り出すことができます。

しかし、それらの文法と違ってループする回数を指定しなくてもいいのがforeach文のメリットになります。

また、配列の中にある要素に対して使用できるので、連想配列にも使用することができます。

繰り返し処理というものは、プログラミングをする上でとても必要な処理になってきますので、foreachについて理解したい場合は、この記事を見て学習するようにしましょう。

今回はPHPのforeach文で配列や連想配列の要素数に合わせて繰り返し処理を行う方法について紹介していきます。




この記事はこんな方におすすめ
・PHPで作成した配列に対して繰り返し処理を行いたい人
・foreach文について詳しく知りたい人

foreach文とは

foreach文とは、指定した配列のそれぞれの要素に対して処理を行う文法になります。

指定した配列の要素を一つずつ取り出し、その要素に対して処理を行うことができます。

foreach文の書き方

foreach文の書き方は、下記の2パターンがあります。

配列の要素の値のみを取り出す場合

配列の要素の値のみ取り出す場合のforeach文は以下のように書きます。

配列名に対象の配列を指定します。

そして、変数を指定することで配列内にある各値に対して繰り返し処理を行うようになります。

最後の値に到達すると、処理を終了します。

 

配列の要素のキーと値を取り出す場合

また、配列の要素のキーと値を取り出す場合のforeach文は以下のように書きます。

配列名に対象の配列を指定します。

そして、各要素のキーと値を取り出すためにキーと変数を指定することで、配列内にある値を、キーと共に取り出すことができます。

最後の値に到達すると、処理を終了します。

 

foreach文で配列や連想配列の数に合わせて繰り返し処理を行うサンプルコード

foreach文で配列や連想配列の数に合わせて繰り返し処理を行うサンプルコードをご紹介します。

ここでは、下記の2つの場合でforeach文を使用します。

  1. 配列の要素数に合わせて繰り返し処理を行う場合
  2. 連想配列の要素数に合わせて繰り返し処理を行う場合

配列の要素数に合わせて繰り返し処理を行う場合

foreach文を使って、配列の要素数に合わせて繰り返し処理を行ってみます。

⚫︎ index.php

⚫︎ 実行結果

foreach文で配列の要素数に合わせて繰り返し処理を行った結果-1

foreach文によって、配列の要素数に合わせて繰り返し処理が行われています。

そのため、配列から取り出した要素の値が全て表示されています。

また、キーと値の両方を取り出す書き方で配列の要素数に合わせて繰り返し処理を行ってみます。

⚫︎ index.php

⚫︎ 実行結果

foreach文で配列の要素数に合わせて繰り返し処理を行った結果-2

配列から取り出した要素のキーと値が表示されています。

連想配列の要素数に合わせて繰り返し処理を行う場合

foreach文を使って、連想配列の要素数に合わせて繰り返し処理を行ってみます。

⚫︎ index.php

⚫︎ 実行結果

foreach文で連想配列の要素数に合わせて繰り返し処理を行った結果-1

foreachによって連想配列の要素数に合わせて繰り返し処理が行われています。

そのため、連想配列から取り出した要素の値が全て表示されています。

また、こちらもキーと値の両方を取り出す書き方で連想配列の要素数に合わせて繰り返し処理を行ってみます。

⚫︎ index.php

⚫︎ 実行結果

foreach文で連想配列の要素数に合わせて繰り返し処理を行った結果-2

連想配列から取り出した要素のキーと値が表示されています。

foreach文の繰り返し処理の最中で操作できる文法の一覧

foreach文を使用している間に、他の文法を使用することで、繰り返し処理が行われている間に、さまざまな処理を行うことができます。

ここでは、foreach文の繰り返し処理の最中で使用できる下記の4つについてご紹介します。

  1. 条件によって繰り返し処理を分岐する場合
  2. 繰り返し処理を途中で中止する場合
  3. 繰り返し処理中に処理を飛ばす場合
  4. 条件によって繰り返し処理を多岐分岐する場合

条件によって繰り返し処理を分岐する場合

条件によって繰り返し処理を分岐する場合はif文を使用します。

⚫︎ index.php

⚫︎ 実行結果

if文で条件によって繰り返し処理を分岐した結果

if文を使用することで、繰り返し処理を条件によって分岐することができます。

そのため、黒の値を取り出した場合のみキーが取り出されています。

繰り返し処理を途中で強制終了する場合

繰り返し処理を途中で強制終了する場合は、breakを使用します。

break文は繰り返し処理を途中で抜けることができる挙動になります。

foreachは配列の全ての要素に対して繰り返し処理が行われますが、breakを使用することで、途中であっても繰り返し処理を強制的に終了させることができます。

⚫︎ index.php

⚫︎ 実行結果

breakで繰り返し処理を途中で強制終了した結果

breakによって繰り返し処理が途中で強制終了しています。

そのため、「紺」以降にある「白」と「黒」のキーと値が表示されていません。

繰り返し処理中に処理を飛ばす場合

繰り返し処理中に処理を飛ばす場合は、continueを使用します。

continueは、繰り返し処理を一時的にスキップすることができる文法になります。

そのため、配列の全ての要素に対して繰り返し処理は行われますが、ある条件だけ一致する値だけ処理をスルーすることができます。

⚫︎ index.php

⚫︎ 実行結果

continuedで繰り返し処理中に処理を飛ばした結果

continueによって繰り返し処理を途中でスキップしています。

そのため、奇数のキーである「桃」と「白」のキーと値が表示されていません。

条件によって繰り返し処理を多岐分岐する場合

条件によって繰り返し処理を多岐分岐する場合はswitch文を使用します。

switch文とは、ある式の値に対して複数の分岐の処理を行うことができる文法になります。

⚫︎ index.php

⚫︎ 実行結果

switch文で条件によって繰り返し処理を多岐分岐した結果

switch文を使用することで、繰り返し処理を条件によって多数の分岐を行っています。

そのため、それぞれの値に適した果物の名前が表示されています。

foreach文で多次元配列の要素数に合わせて繰り返し処理を行うサンプルコード

foreach文で多次元配列の要素数に合わせて繰り返し処理を行うサンプルコードについてご紹介します。

2次元配列の場合

2次元配列にforeach文を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

foreach文で2次元配列の要素数に合わせて繰り返し処理を行った結果

foreach文の中にforeach文を使用することで、2次元配列の中にある全ての要素に対して繰り返し処理が行われています。

そのため、多次元配列の要素のキーと値が全て表示されています。

3次元配列の場合

3次元配列にforeach文を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

foreach文で3次元配列の要素数に合わせて繰り返し処理を行った結果

foreach文の中にforeach文を、さらにその中にforeach文を使用することで、3次元配列の中にある全ての要素に対して繰り返し処理が行われています。

そのため、こちらも多次元配列の要素のキーと値が全て表示されています。

foreach文で配列の数に合わせて繰り返し処理を行う場合

foreach文はlist()を使用することで、配列の数に合わせて繰り返し処理を行うことができます。

⚫︎ index.php

⚫︎ 実行結果

foreach文で配列の数に合わせて繰り返し処理を行った結果

list()を使用することで、配列の数に合わせて繰り返し処理が行われています。

そのため、2次元配列の中にある1次元配列がそのまま繰り返して表示されています。

for文とforeach文の違い

foreach文は、for文の配列版みたいなものです。

そのため、for文とforeach文に大きな違いはありませんが、唯一違いがあるとすれば回数を指定するかしないかです。

例えば、配列の要素を取り出して処理を行うコードをforeach文で実装すると下記のようなコードになります。

⚫︎ index.php

⚫︎ 実行結果

foreach文で配列の要素を取り出して処理を行った結果

foreach文で指定した配列の要素のキーや値を取り出して処理が行われています。

続いてfor文を使って先ほどの処理を行うと、下記のようなコードになります。

⚫︎ index.php

⚫︎ 実行結果

for文で配列の要素を取り出して処理を行った結果

for文によってこちらも配列の要素を取り出してそれぞれに処理が行われています。

しかし、for文の場合は条件式次第で繰り返し処理が動くため、配列の長さを取得する処理が必要があります。

foreach文だと、配列内にある全ての要素に対して処理が行われますが、for文だと条件式次第で処理が決まるので、全ての要素に対して処理が行われるかどうかはコード作成者次第になります。

そのため、配列の全ての要素に対して確実に処理を行いた場合はforeach文を使用するようにしましょう。

まとめ

⚫︎ foreach文とは、指定した配列のそれぞれの要素に対して、処理を行う文法である

⚫︎ foreach文は、要素の値のみを取り出す書き方と要素のキーと値の両方を取り出す書き方の2つがある

⚫︎ foreach文にif文を使用すると、繰り返し処理が条件によって分岐する

⚫︎ foreach文にbreakを使用すると、繰り返し処理を強制終了する

⚫︎ foreach文にconthnueを使用すると、繰り返し処理をスキップする

⚫︎ foreach文にswitch文を使用すると、繰り返し処理が条件によって多岐分岐する

⚫︎ foreach文を多次元配列に対して使用する場合はネストにする

⚫︎ foreach文で配列の数に合わせて繰り返し処理を行う場合はlist()を使用する

⚫︎ for文とforeach文の違いは回数を指定するかしないかである
(配列で繰り返し処理を行うならforeach文が良い)

コメントを残す

メールアドレスが公開されることはありません。