【作って納得!PHP入門】for文を使ってみよう(繰り返し処理)

PHP

前回はswitch文について記載しました。

今回は繰り返し処理(ループ)のfor文について見ていきます。

最初にfor文についての説明をします。
その後に、実際に簡単なプログラムを作成して、for文について学んでいきます。

PR

この記事の目標(作るもの)について

for文を使用した簡単なプログラムを作成し、下記のように画面に結果を出力して確認します。

PR

PHPのfor文とは?

PHPのfor文も他の言語と同じように、繰り返し処理(ループ)するために使用します。
実際の構文としては、このようになります。

for (カウンタの初期値; 継続条件; カウンタの更新) {
  // .....繰り返す処理を書く.....
}

forから始まって、最初に[カウンタの初期値]を変数で定義します。
これはループするごとに[カウンタの更新]で、更新されていきます。

[継続条件]がtrue(条件に合っている)の場合に、繰り返し処理が続きます。
中括弧の { から } までの間の処理が、繰り返し処理が続く間は処理されます。

ループの最後まで行って、ループの頭に戻ると[カウンタの更新]が動作します。
この後、[継続条件]が再評価され、trueになる場合はもう一度、処理を行うことになります。
[継続条件]がfalseになる(条件に合わなくなる)まで、処理が続きます。

ざっくりと概念を説明しましたが、わかりにくいかと思います。
実際にコードを書いて、確認していきましょう。

無限ループについて

無限ループは継続条件の箇所が、ずっとtrueになってfor文の処理が終わらない状態のことです。

カウンタの初期値と更新する値、継続条件をしっかりと意識して書かないと、無限ループになってバグを作り出す要因になります。
PHPでもfor文を使う場合は、使用する値に気をつけて使うようにしましょう。

PHPでfor文を使ってみよう

実際にfor文を使用して、処理を書いてみましょう。
前回作成したcodelike_web_dockerの配下に、hello_sweets_for.phpという名前で下記の内容で保存します。

<?php

echo "for test1<br />";
for ($i = 0; $i < 5; $i++) {
    echo "Hello{$i}"."<br />";
}

echo "<br />for test2<br />";
$sweets = ["クッキー", "キャンディ", "チョコレート", "ビスケット"];
for ($i = 0; $i < count($sweets); $i++) {
    echo "{$i}. {$sweets[$i]}"."<br />";
}

echo "<br />for test3<br />";
for ($i = (count($sweets)-1); $i > -1; $i--) {
    echo "{$i}. {$sweets[$i]}"."<br />";
}

解説

単純なHelloを出力する

最初は単純に”Hello[n]”を出力する処理です。([n]はカウンタの数値)
[カウンタの初期値]は$i = 0としています。これで$iは0から始まります。

for ($i = 0; $i < 5; $i++) {

[継続条件]は$i < 5としています。
この条件によって、$iが0から4まで(true)の間、処理が続きます。

[カウンタの更新]は$i++となっています。
処理が終わって、ループの先頭に戻ってくると、$iが1足されます。
そして[継続条件]が再評価されます。[継続条件]があわない場合は繰り返し処理を抜けます。

{ から } の出力処理が行われて、ここでは“Hello0”, “Hello1″… と5回出力されます。

配列の全ての要素を出力する

次の処理は、4つのお菓子の名前を入れた$sweetsという配列を用意して、全ての名前を出力しています。

for ($i = 0; $i < count($sweets); $i++) {

[カウンタの初期値]は、先ほどと同じように0から始まっています。
[継続条件]は$i < count($sweets)となっています。

ここでcountが登場しています。このcount関数は配列の要素数を返してくれます。
なので、count($sweets)は4になって、[継続条件]は$i < 4になります。

[カウンタの更新]は$i++になっています。
ループの先頭に戻ると、これで$iが「+1」されますね。

出力箇所は“{$i}. {$sweets[$i]}”となっています。
これで、カウンタの数字と配列の要素が出力されます。“0. クッキー”, “1. キャンディ”… というように出力してくれます。

配列の全ての要素を逆順に出力する

カウンタの値を工夫すると、ループする回数を制限したり、カウンタの値をスキップしたり(2ずつ増加させるなど)することができます。
ここでは、先ほどのお菓子の名前の配列の値を逆から出力してみています。

for ($i = (count($sweets)-1); $i > -1; $i--) {

[カウンタの初期値]は、(count($sweets)-1)となっています。
count($sweets)は4になりますが、配列は0からなので、最後の配列の番号は3になります、
なので、(count($sweets)-1)は3になり、$iは3から始まります。(最後の値から出力したいため)

[継続条件]は$i > -1となっています。
なので、$iが0になるまでは、ループの処理が行われます。
0の要素が出力されると、$iは「-1」になって処理が終わります。

[カウンタの更新]は$i--です。
これを設定しているため、ループ毎に$iが引かれて(-1)いきます。

出力箇所は先ほどと同じように、“{$i}. {$sweets[$i]}”となっています。
これで、“3. ビスケット”, “2. チョコレート”… というように逆順に出力してくれます。

動作確認

想定通りの結果が出力されているか確認してみましょう。前回作成した環境を立ち上げます。
hello_sweets_for.phpの編集が終わったら、保存して下記にアクセスします。

想定した結果が返ってきました!

おわりに

今回はfor文を見ていきました。

配列を使用する場合などに登場することが多いです。
初期値や更新する値に気を使って書いていかないと、バグを生み出す要因になるので気を付けましょう。

その他のPHP入門のオススメ記事

そのほかに、このブログで書いているオススメ記事をご紹介します。

foreach文を使ってみよう

次回は作った環境を使用して、PHPのforeach文を使ってみましょう。

PHP入門の記事一覧に戻る

他のPHP入門記事もありますので、合わせてご確認ください。

参考

公式ドキュメント – for
PHP: for - Manual
PHPプログラミング初心者
PR
独学に限界を感じたら、オンラインのプログラミングスクールへ...
  • Code ViIlage
      挫折させない本気のプログラミングスクール。学習継続率93.3%・卒業生800名以上。
  • DMM WEBCAMP
      働きながら自分のペース学んでエンジニア転職。無料カウンセリング満足度99%!
  • TECH CAMP
      無料カウンセリング満足度95%!本業に活かせる。キャリアアップにつながる。
  • TechAcademy
      現役エンジニアから学べるオンラインに特化したプログラミングスクール。
  • テックパートナーズカレッジ
      WEBシステム開発会社のノウハウが学べるオンラインスクール。14日無料体験有り!
\ PHP・Laravelに特化したオンラインスクール /
yasuakiをフォローする
コードライク

コメント

タイトルとURLをコピーしました