T-file

一歩踏み出す勇気を全力で応援するブログ

【PHP】foreachをスキップ・途中で抜け出す方法

こんにちは、webエンジニアのtakaです。

この記事では、foreachのループをスキップする方法、途中で抜け出す方法を解説していきます。
それではいきましょう!

foreachのループをスキップする方法

foreachのループをスキップするにはcontinueを利用します。

// PHP
$words = ['a', 'b', 'c', 'd'];

foreach ($words as $word) {
 if ($word == 'c') {
  continue;
 }
 echo $word . '<br>';
}

出力結果

a
b
d

$wordが「c」の時にスキップされたことがわかります。

多階層のforeachのループをスキップする方法

次にforeachが入れ子になっている場合はどのように記載するか見ていきましょう。

// PHP
$words = ['a', 'b', 'c', 'd'];
$numbers = ['1', '2'];
foreach ($words as $word) {
 foreach ($numbers as $number) {
  if ($word == 'c') {
   continue 2; // 引数に階層を指定
  }
  echo $word . $number . '<br>';
 }
}

出力結果
a1
a2
b1
b2
d1
d2

continueの引数に階数を指定することで、入れ子のforeachをスキップすることができます。

foreachを途中で抜け出す方法

foreachを途中で抜け出す際は、breakを利用します。

// PHP
$words = ['a', 'b', 'c', 'd'];

foreach ($words as $word) {
 if ($word == 'c') {
  break; // 条件がtrueの時にforeachから抜け出す
 }
 echo $word . '<br>';
}

出力結果

a
b

$wordが「c」の時にforeachを抜け出しその後ループされないことがわかります。

多階層のforeachを途中で抜け出す方法

foreachが入れ子になっている時の抜け出し方を見ていきましょう。

// PHP
$words = ['a', 'b', 'c', 'd'];
$numbers = ['1', '2'];
foreach ($words as $word) {
 foreach ($numbers as $number) {
  if ($word == 'c') {
   break 2; // 引数に階層を指定
  }
  echo $word . $number . '<br>';
 }
}

出力結果
a1
a2
b1
b2

break 2とすることで親のforeach(foreach ($words as $word))を抜け出すことができました。

まとめ

今回の記事ではPHPのforeachでループをスキップする方法・ループを抜け出す方法・多階層の場合での方法を見ていきました。
簡単でしたね。

この記事で解決できれば幸いです。
ではまた。