おはようございます、こんにちは、こんばんわ。
フリーランスの薬剤師として生活収入を得ながら、プログラミング言語を勉強している”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回目で処理が止まってますね!
ざっくり追加した記述を説明すると・・・
カウント(繰り返し処理回数)を管理するためにnumとは別に” i “と言う変数を作りました。
(なお変数名は” i “でなくても構いません)
初期値を「1(1回目)」としておきます。($i = 1;)
もしwhile文の条件を満たさず処理が下に走った場合、if文が実行されます。
if($i === 20)としているので、20回目の処理の際にbreakが実行され、while文の条件の有無に問わず、繰り返しは中断されます。
1~19回目の場合は、breakせずにさらにif文の下に処理が走るので、i++されて、”i”の数字が1つ増え、そしてwhile文の初めに戻ります。
まとめ
基本的な繰り返し文であるfor文とwhile文をまとめてみました。
基本的にJavaScriptと同じなので、先にJavaScriptを学んでいた場合は学習に入りやすいのではないでしょうか?
最後のwhile文+break文のコード例は、少しプログラミングっぽくて、
理解できるとなんかそれっぽいですよね。笑
出来る事が増えるのは本当に学習の醍醐味です!
私も、このブログで知識を定着させながら、幅広く学習していきたいと改めて思う次第です。
コメント