PHP while文とdo…while文のサンプル

PHPのwhile文とdo…while文のサンプルです。条件で処理の繰り返しを制御します。

目次

while文 while文とは / while文のサンプル / HTMLにwhile文を書く時
  ループを抜ける(break) / 2重ループを抜ける
  ループの先頭に戻る(continue)
do...while文 do…while文とは / do…while文のサンプル
  ループを抜ける(break) / 2重ループを抜ける
  ループの先頭に戻る(continue)
演算子 比較演算子

while文とは

while (条件){
    実行される処理
}
  • 条件がtrueの間、処理を繰り返します。
  • 条件がfalseの場合、ループ処理を終了します。
  • 最初の条件の判定でfalseの場合、ループは1回も実行されません。
  • 処理に、条件をfalseにするロジックがないと無限ループになるので注意が必要です。
  • 以下はPHPマニュアルのwhile文のリンクです。
    http://php.net/manual/ja/control-structures.while.php

while文のサンプル

<?php
$num = 0;

while ($num < 5){
	echo "$num"; //0,1,2,3,4が出力される
	$num ++;
}

4行目は値が5より小さい間、処理を繰り返します。
6行目は、条件になる値を加算しています。

HTMLにwhile文を書く時

<?php $num = 0; ?>

<?php while ($num < 5) : ?>

	<p><?= "$num" ?></p><!-- 0 1 2 3 4が出力される -->

	<?php $num++; ?>

<?php endwhile; ?>

3~9行目がwhile文です。
3行目のwhileの後ろには、コロン:がついています。
9行目は、endwhileがあります。while文の終わりが、わかりやすくなっています。

while文 ループを抜ける(break)

<?php
$num = 0;

while (true){
	if ($num === 3) {
		break;
	}
	echo "$num"; //0,1,2が出力される
	$num ++;
}

6行目のbreakは、4~10行目のwhile文を抜けます。
4行目は、条件をtrueにしています。breakがないと無限ループになるので注意して下さい。

2重ループを抜ける

<?php
$num = 0;
while (true) {
  while (true) {
    if ($num === 3) {
      break 2;
    }
    echo "$num"; //0,1,2が出力される
    $num++;
  }
}
echo "終了"; //出力される

6行目は、breakの引数に2を指定しています。外側のwhile文を抜けます。
PHPの5.4.0からbreakの引数に変数を渡すことができなくなりました。

while文 ループの先頭に戻る(continue)

<?php
$i = 0;

while ($i < 5){
	if ($i === 3) {
		$i ++;
		continue;
	}
	echo "$i"; //0,1,2,4が出力される
	$i ++;
}

7行目のcontinueは、次は4行目を実行します。そのため9行目は実行されません。
このサンプルでは6行目の加算がないと無限ループになるので注意して下さい。

do…while文とは

do{
    実行される処理
} while (条件);
  • 条件がtrueの間、処理を繰り返します。
  • 必ず1回は処理が実行されます。
  • 処理に、条件をfalseにするロジックがないと無限ループになるので注意が必要です。
  • 以下はPHPマニュアルのdo…while文のリンクです。
    http://php.net/manual/ja/control-structures.do.while.php

do…while文のサンプル

<?php
$num = 0;

do{
	echo $num; //0,1,2,3,4が出力される
	$num ++;
}while ($num < 5);

7行目は値が5より小さい間、処理を繰り返します。

do...while文 ループを抜ける(break)

<?php
$num = 0;

do{
	if ($num === 3) {
		break;
	}
	echo $num; // 0,1,2が出力される
	$num ++;
}while (true);

6行目のbreakは、do...while文を抜けます。
10行目は、条件をtrueにしています。breakがないと無限ループになるので注意して下さい。

2重ループを抜ける

<?php
$num = 0;
do {
  do {
    if ($num === 3) {
      break 2;
    }
    echo $num; //0,1,2が出力される
    $num++;
  } while (true);
} while (true);
echo "終了"; //出力される

6行目は、breakの引数に2を指定しています。外側のdo while文を抜けます。
PHPの5.4.0からbreakの引数に変数を渡すことができなくなりました。

do...while文 ループの先頭に戻る(continue)

<?php
$num = 0;

do{
	if ($num === 3) {
		$num ++;
		continue;
	}
	echo $num; // 0,1,2,4が出力される
	$num ++;
}while ($num < 5);

7行目のcontinueは、次は11行目を実行します。そのため9行目は実行されません。

比較演算子

PHPの比較演算子の一覧です。

比較演算子 説明
a == b aとbの値は等しい
a === b aとbの値は等しい かつ 型も等しい
a != b aとbの値は等しくない
a <> b aとbの値は等しくない
a !== b aとbの値は等しくない または 型が等しくない
a > b aはbより大きい
a >= b aはbより大きい または 等しい
a < b aはbより小さい
a <= b aはbより小さい または 等しい

以下はPHPのマニュアルの比較演算子のリンクです。
http://php.net/manual/ja/language.operators.comparison.php

関連の記事

PHP if文 条件分岐を行うサンプル
PHP foreach文のサンプル(break/continue)
PHP ユーザー定義関数のサンプル
PHP エスケープシーケンスのサンプル

△上に戻る