調剤薬局オーナー様へ 【現在就業可能日】火曜、木曜、土曜、日曜 時給3,300円~相談可能 お気軽にお問い合わせください。

【バックエンド初心者がまとめるPHP学習日記④】繰り返し処理を取得してみよう for/while

おはようございます、こんにちは、こんばんわ。

フリーランスの薬剤師として生活収入を得ながら、プログラミング言語を勉強している”Yuya Matsuura”と申します。

基本的には、HTML,CSS(SASS),JavaScriptを用いたWebページ制作で現在副収入を得ようとしている最中ですが、

人並みに知識欲はある方なので、平行して複数のプログラミング言語やフレームワークを学習しております。

その中で、【WordPress】などにも採用されている≪PHP≫について、改めて学び始めておりまして、

ブログ記事としてアウトプットすることで知識の定着を狙う

+同じような境遇の方の参考になればと思い、シリーズ化して記事にさせて頂きます。

個人的な目標は”Raravel”(フレームワーク)をサクサク使いこなせるようになりたい!です。

※なお、追々記事でまとめるかは決めかねていますが、ローカル環境構築については今のところ記事にするつもりはないので、ご容赦ください。

アウトプット方式なので、記事としては見難いかも知れませんが、ご参考になれば幸いです。

それでは本文をどうぞ!

目次

繰り返し処理① - for文 –

※JavaScriptのfor文と書き方ほぼ同じなので、簡略して記事にします。

参考記事はこちら。

JavaScriptで繰り返し文を書いてみる【基礎中の基礎③】【for文】

<body>
<?php
    for($i = 0; $i < 5; $i++) {
        echo $i;
        echo "</br>";
    }
?>
</body>

JavaScriptと同様です。

for( )の中に条件式を書いて、続く { } の中に繰り返したい処理を書きます。

( ) の中に条件式はそれぞれ3つの項目があり、「;」で区切ります。

1つ目は初期値の設定(今回は0)

2つ目は繰り返す回数の指定(今回は「5は含めない」まで)

そして、3つ目は増減幅の指定です。

補足:3つ目の指定を今回「$i++」(プラスプラス 略してプラプラ)と書いています。

   この「++」は1つずつ増やしていくの意味があります。

   「$i += 1」の書き方の方が一般的かもしれませんが、文字数的にも楽なので両方覚えておくと良いかもですね

ローカルブラウザには縦に「01234」と表示されましたでしょうか。

echo ” </br> “; も同じく繰り返すことで改行させています。

繰り返しの途中で強制終了させる - break文 –

合わせてbreak文についても学びましょう。

<?php
    for($i = 0 ; $i < 500; $i++) {
        echo $i;
        echo "</br>";
    }
?>

上記記述では、0から始まり499までechoしていきますが、途中で「160位で処理を止めたくなった」とします。

このような状況の時に「break文」を書いていきます。

基本的に「if文」との組み合わせで書くことがほとんどかな?と思います。

<?php
    for($i = 0 ; $i < 500; $i++) {
        echo $i;
        echo "</br>";

        if ($i === 160) {
            break;
        }
    }
?>

変数$iが160と「===」の時に、breakで処理を止めることが出来ます。

↑無事に処理が終わりました。

処理を一旦止めて、条件を満たす場合は次の繰り返しへスキップする - continue文 –

日本語で書くとよくわからんですが、例を挙げて実際のコードを見てみましょう。

<?php
for ($i = 0; $i < 10; $i++) {
    if ($i === 5) {
        continue;
    }

    echo $i;
    echo "</br>";
}
?>

0~9までを繰り返してechoする処理ですが、「5」だけ抜けているがお判りでしょうか?

if文の条件式で($i === 5)としており、要するに「5」の時のみ”continue”の処理をします。

continueは一旦繰り返しの処理を止め、繰り返しの処理をはじめに戻します。

この結果 $i=5 の時のみecho文が走らずに次の6以降の繰り返し処理に移るのです。

実際に値を変えながらコード書いてみると分かりやすいと思うので、色々と試してみてください!

繰り返し処理② - while文 –

まずfor文とwhile文の使い分けですが

for文 ▶ 繰り返す回数が決まっている時に使う

while文 ▶ 繰り返す回数が決まっていない場合に(決められない場合に)使う

では、実際にwhile文を書いてみたいと思いますが、その前に1つ便利な関数がありますので、ご紹介

mt_rand()関数について

ざっくり言うと「ランダムな数字」用意してくれる、便利な関数です。

例えば $num = mt_rand(0, 10); と記述すると( )の中の「0」~「10」までの間でランダムな数字を変数に入れてくれます。

<?php
    $num = mt_rand(0,10);
    echo $num;
?>

ブラウザには「0~10」までの内、ランダムな数字が1つ表示されてますでしょうか?

そして、リロードすると、今度はまた先ほどと違う(確率的には同じ場合も稀にあるが)数字が表示されてると思います。

このmt_land()関数を使って、while文の例を書いてみましょう。

<?php
    $num = mt_rand(0,10);
    
    while($num !== 10) {
        $num = mt_rand(0,10);
        echo $num;
        echo "</br>";
    }
?>

リロードしてみる。

確立によっては数回で処理が終わることもあるし、全然終わらないときもある。

このように処理回数が決まっていない時に使うのが「while文」です。

while( )の中に条件式を書いていきますが、今回は「10でない限り(!== 10)、処理をし続ける」と言う記述をしてます。

無限ループに注意!

for文でもwhile文でも、いずれも起こり得るのですが、条件式によっては無限に繰り返しが処理が行われ、

いずれPCの処理が限界になり、エラーを起こしてしまいます。

この場合は該当のブラウザのタブを閉じたり、読み込みの中止を早急にしてください!

今回のwhile文で例に挙げた上記のコードも、無限ループの危険性を孕んでいる一例です。

5行目のwhile文の{ }内に書いてある2回目の「mt_rand()関数」を記載しない場合は、無限ループになってしまいます。

(試すときは自己責任で!!!)

理由としては、まず初めのwhile文の外で、$numの中にランダムな数字を入れておりますが(1回目のmt_rand()関数)、

2回目のmt_rand()関数で数字を更新してあげないと、数字が変わらないままwhile文の初めに戻り繰り返し処理が行われるため、

初めの1回目のmt_rand()関数で「10」以外の数字が入った場合は、永遠に数字が変わらないまま処理がループされることなり、

(例えば「4」なら「4」で、数字が更新されないまま、永遠に繰り返される)

無限ループになってしまいます。要注意ですね。

無限ループの対策としては、break文をあらかじめ記述しておくと安心だと思います。

例えば上記例を書き換えて、mt_rand()関数によるランダムな数字を「1~1000」とする場合、

その中から「10」引き当てて、処理を止めるためには、相当確率的に低めを当てなければいけません。

<?php
    $num = mt_rand(0,1000);
    
    while($num !== 1000) {
        $num = mt_rand(0,10);
        echo $num;
        echo "</br>";
    }
?>

なかなか「10」を当てる確率が低く処理が止まらないコード。

<?php
    $num = mt_rand(0,1000);

    $i = 1;

    while($num !== 10) {
        $num = mt_rand(0,1000);
        echo $num;
        echo "</br>";

        if($i === 20) {
            break;
        }

        $i++;
    }
?>

20回目で強制終了させる記述をbreak文で書いてみました。

20回目で処理が止まってますね!

まとめ

基本的な繰り返し文であるfor文とwhile文をまとめてみました。

基本的にJavaScriptと同じなので、先にJavaScriptを学んでいた場合は学習に入りやすいのではないでしょうか?

最後のwhile文+break文のコード例は、少しプログラミングっぽくて、

理解できるとなんかそれっぽいですよね。笑

出来る事が増えるのは本当に学習の醍醐味です!

私も、このブログで知識を定着させながら、幅広く学習していきたいと改めて思う次第です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次