「PHP」の「条件分岐」と「繰り返し」の書き方を学ぶ
今回は、「条件分岐」や「繰り返し」などについて学んでいきたいと思いますが、「ほとんどC言語と同じだけど・・・」と先にエンジニアさんに言われてしまったので、本当に同じなのか検証をしながら学んでいきたいと思います。
「新しさ」を期待していたので、「学ぶ前にそんなことは言わないでほしい」とか思ったり・・・
何か「新しいもの」があると信じて学んでいきたいと思います。
「if文」の仕組みと作り方
if文は、
if( 条件 ){ // 条件を満たした時に実行する処理を書く }
という書き方になります。
が、PHPはWEBアプリケーションなので、「ブラウザに表示されたボタンをクリックしてブラウザの出力結果を切り替える」ようにプログラムを作ってみました。
<?php $contents = ''; if( isset($_GET['input_contents']) === TRUE ){ $contents = htmlspecialchars($_GET['input_contents'], ENT_QUOTES); } ?> <!DOCTYPE html> <head> <meta charset="utf-8"> </head> <body> <form> 入力内容:<input type="text" name="input_contents"> <input type="submit" value="送る"> </form> 結果:<?php print $contents; ?> </body> </html>
のようになりますが、本やWEBページを見ながらアレンジしていったので、内容はあまりよくわかっていません。
「isset」って何?「$_GET」って何っていう状態。後で調べて勉強してみたいと思います。
今回は「if文」がメインなので・・・
このページを表示してみると、
のように表示されます。
この入力ボックスに文字を入力して、「送る」ボタンをクリックすると、「結果:」という文字の右に入力した文字が表示されます。
if文は、「送られてきたデータ」があるかどうかを調べていて、データがあれば「$contents」変数に送られたデータを格納している・・・そうです。(まだなんとなくしか理解できていない。)
WEBアプリケーションの場合は、表示の内容を切り替えるためにも「if文」が多用されると教えてもらいました。
「switch文」の条件分岐処理の作り方
「switch文」を使う事でも「条件分岐」処理を作ることができます。
switch( 判定対象 ){ case 値1: // 実行する処理 break; case 値2: // 実行する処理 break; case 値3: // 実行する処理 break; default: // 上記の条件に一致しなかった場合の処理 break; }
「判定対象」に指定した変数が「case」の右横の「値」と一致しているかを判定していき、一致していれば、case下部のプログラムを実行します。
今回は、「今の気分」を数値で入力してもらい、その値を元に処理を行ってみたいと思います。
<?php $feeling = ''; if( isset($_GET['feeling']) === TRUE ){ $feeling = htmlspecialchars($_GET['feeling'], ENT_QUOTES); switch ( $feeling ){ case '1': $feeling = '楽しいことを考えてみよう!!'; break; case '2': $feeling = '美味しいものを食べたら気分も良くなるよ!!'; break; case '3': $feeling = 'おもしろい番組でも見てみたらどうかな?'; break; case '4': $feeling = '今日も一日良い日になりますように♪'; break; case '5': $feeling = 'このままの調子でいきましょう!!'; break; default: $feeling = ''; break; } } ?> <!DOCTYPE html> <head> <meta charset="utf-8"> </head> <body> <form> <p>今の気分を「1(悪い)~5(良い)」の整数値で入力してください。</p> <form> 今の気分は?→<input type="text" name="feeling"> <input type="submit" value="送信する"> </form> <?php if( $feeling !== '' ){ ?> <p><?php print $feeling; ?></p> <?php } ?> </body> </form> </html>
のようにプログラムを作ってみました。
実行してみると、
のように表示されます。
「for文」の仕組みと使いどころ
「for文」も「C言語」に似たような書き方で作ることができるとのことで、
for( 初期条件; 繰り返し条件; 増減の式){ // 繰り返し実行する処理 }
を書いていきます。似ているというかそのままですね(^^;)
では、どうやって使うのかを調べてプログラムを作ってみたいと思います。
<?php $data = array('sample_1','sample_2','sample_3'); ?> <!DOCTYPE html> <head> <meta charset="utf-8"> </head> <body> <?php for($i = 0; $i < count($data); $i++ ){ ?> <p><?php print htmlspecialchars($data[$i], ENT_QUOTES); ?></p> <?php } ?> </body> </html>
のように作ってみました。
「配列」を作って、「for文」で表示するというシンプルなプログラムですが、HTML要素をこのように出力できるのは知りませんでした。
ただ、HTMLの中にPHPを書くとすごく読み難い気がします。
しかし、自分にとっては新しい使い方だったので、「for文」の他の利用例も知りたくなってきました。
ちなみに「for文」の中の条件式にある「count」関数は、引数に配列を渡すと、「配列要素の数」を取得することができます。
少しずついろいろな関数の使い方を学んでいかないといけないですね。
「foreach文」
「繰り返し」には、他にも「foreach文」という書き方があるとのことで、例えば、
foreach( 配列変数 as $value ){ // 繰り返し処理 }
のように書くと、配列の先頭から「$value」に順に値を取り出して処理ができるとのことでした。
こっちの方がシンプルな書き方でいいですね。
「while・do while文」について
「while文」で繰り返し処理を書く場合は、
while( 繰り返し条件 ){ // 繰り返し処理 }
のように書き、「do while文」の場合は、
do { // 繰り返し処理 } while ( 繰り返し条件 );
のように書きます。
「whie」文は、条件を判定してから処理を実行するかを決めていますが、「do while文」は、一度処理を実行してから条件の判定を行うという違いがあります。
ということで、PHPはかなり「C言語」と似ている言語だということがわかりました。
ただ、WEBアプリケーションを作る言語なので、「WEBに特化した仕組み」もあるそうで、少しずつ学んでいきたいと思います。