【PHP入門】for文とwhile文の使い方 繰り返し処理

PHPでfor文とwhile文を使う方法

PHPで繰り返し(ループ)処理をするときの構文、for文とwhile文の解説をします。

目次

for文の使い方

回数を指定して繰り返し処理をする場合は、for文を使います。

for文の書き方は次のとおりです。

for (初期値; 条件式; 増減式){
  処理
}

具体的に書いてみます。

for ($i = 1; $i <= 10; $i++) {
  echo $i . '<br>';
}

次のように出力されます。

1
2
3
4
5
6
7
8
9
10

for文の最初の式$i = 1で、カウンタの初期値1に設定します。

初期値はいくつに設定してもいいのですが、普通は01にします(普通って何)。ちなみに、$iはindexの頭文字だそうです。この変数名もなんでもいいのですが、普通は$iにします。

2つめの式$i <= 10は、条件式です。この条件がtrueならば繰り返しは続行します。

3つめの式$i++各繰り返しの後に評価(実行)されます。$i++$iに1を足すという意味です。つまり、処理が繰り返されるたびに$iの値は1つずつ増えていきます。

$i++は、$i = $i + 1と書くこともできますし、$i += 1と書くこともできます。しかし、$i++と書くのがとされています。

条件式がfalseならば繰り返しは終了します。この例では$i11になったときに繰り返しが終了します。

while文の使い方

指定した条件を満たす限り繰り返し処理をする場合は、while文を使います。先に言っておきますが、while文は使わないので覚えなくてOKです(暴言)。

while文の書き方は次のとおりです。

while (条件式){
  処理
}

具体的に書いてみます。

下記は、配列$membersに格納された会員情報を出力するコードです。$membersには何件の会員情報が入っているのかわからないので、回数を指定して繰り返し処理をすることができません。

$members[0] = array('name' => 'カイザー・ヴァッテンバハ', 'age' => 26);
$members[1] = array('name' => 'マルテ・ゾンバルト', 'age' => 32);
$members[2] = array('name' => 'ヴェンデル・ギーレン', 'age' => 72);
$members[3] = array('name' => 'アレクシス・ゲーアマン', 'age' => 19);
$members[4] = array('name' => 'ジーモン・テーリヒェン', 'age' => 50);

$i = 0;               
while (isset($members[$i])) {
  echo $members[$i]['name'] . '<br>';
  $i++;
}

次のように出力されます。

カイザー・ヴァッテンバハ
マルテ・ゾンバルト
ヴェンデル・ギーレン
アレクシス・ゲーアマン
ジーモン・テーリヒェン

条件式はisset($members[$i])です。isset関数は変数がセットされているかを調べます。$members[0], $members[1]..と処理が繰り返されていき、$members[5]になったところで、falseが返されるので繰り返しが終了します。

激安プログラミングスクールのご紹介

独学は難しいと感じているあなたには、プログラミングスクールをオススメします。

  • 入会金不要、月額2,980円〜でプログラミングを学べる。
  • オンラインで学べるので地方在住者でも受講可能。
  • 現役エンジニアとのマンツーマンレッスンも月1回〜可能。
  • 回答率100%のQ&A掲示板に質問し放題。
  • 40種類以上の教材が学習し放題。HTML/CSS, JavaScript, PHP, Ruby, Python, WordPress, SQL などなど他にも盛りだくさん。

breakとcontinue

for文やwhile文で、繰り返し処理を中断したりスキップするにはbreakcontinueを使います。ifと一緒に使われることが多いです。

break

繰り返し処理を中断するにはbreakを使います。

for ($i = 1; $i <= 10; $i++) {
  if ($i == 5) {
    break;
  }
  echo $i . '<br>';
}

次のように出力されます。

1
2
3
4

$i5になったときに処理が中断され、それ以降の繰り返しは行われません。

continue

繰り返し処理をスキップするにはcontinueを使います。

for ($i = 1; $i <= 10; $i++) {
  if ($i == 5) {
    continue;
  }
  echo $i . '<br>';
}

次のように出力されます。

1
2
3
4
6
7
8
9
10

$i5のときだけ処理が実行されず、それ以降はまた繰り返し処理が再開されます。

for文とwhile文の違いと使い分け

for文とwhile文の違いは次のとおりです。

for回数を指定して繰り返す。
while条件を指定して繰り返す。

ただし、書き方次第でfor文でwhile文っぽいこともできるし、while文でfor文っぽいこともできるんです。

例えばこんな感じ。

//for文で10回繰り返し
for ($i = 1; $i <= 10; $i++) {
  echo $i . '<br>';
}

//while文で10回繰り返し
$i = 1;
while ($i <= 10) {
  echo $i . '<br>';
  $i++;
}
$members[0] = array('name' => 'カイザー・ヴァッテンバハ', 'age' => 26);
$members[1] = array('name' => 'マルテ・ゾンバルト', 'age' => 32);
$members[2] = array('name' => 'ヴェンデル・ギーレン', 'age' => 72);
$members[3] = array('name' => 'アレクシス・ゲーアマン', 'age' => 19);
$members[4] = array('name' => 'ジーモン・テーリヒェン', 'age' => 50);

//for文で配列の値をすべて出力
for ($i = 0; isset($members[$i]); $i++) {
  echo $members[$i]['name'] . '<br>';
}

//while文で配列の値をすべて出力
$i = 0;
while (isset($members[$i])) {
  echo $members[$i]['name'] . '<br>';
  $i++;
}

というわけで、ケースバイケースで使い分けてもいいし、for文またはwhile文のどちらかだけを使うという俺様ルールを制定してもいいと思います。

ちなみに私はfor文しか使わない主義人民共和国です。for文のほうが「初期値」「条件式」「増減式」が1ヶ所にまとまっていてわかりやすいですよね。while文でこれらの設定を間違えると無限ループに陥って大変なことになります。試しにやってみてください。

$i = 1;
while ($i <= 10) {
  echo $i . '<br>';
  //$i++; ←これを忘れると無限ループ
}

for文とwhile文、速度はどっちが速いの?って思った方もいるでしょう。私、実験しました。ほぼ同じです。安心してfor文を使いましょう。

でわでわ

激安プログラミングスクールのご紹介

独学は難しいと感じているあなたには、プログラミングスクールをオススメします。

  • 入会金不要、月額2,980円〜でプログラミングを学べる。
  • オンラインで学べるので地方在住者でも受講可能。
  • 現役エンジニアとのマンツーマンレッスンも月1回〜可能。
  • 回答率100%のQ&A掲示板に質問し放題。
  • 40種類以上の教材が学習し放題。HTML/CSS, JavaScript, PHP, Ruby, Python, WordPress, SQL などなど他にも盛りだくさん。
PHPでfor文とwhile文を使う方法

この記事が気に入ったら
いいね または フォローしてね!

シェアしてね

コメント

コメントする

目次