Webプログラミングの基礎 PHPの基礎(4) ~switch,ループ (2011/06/08) 政策情報学部 渡辺恭人 riho-m@cuc.ac.jp メーリングリスト:riho-m-rg11@cuc.ac.jp: 資料ページ: http://www.cuc.ac.jp/~riho-m/rg11/ 課題の例 • date関数とif構文を使って、曜日を日本語で表示させるプロ グラムを作成しなさい。 – リファレンスマニュアルで調べる • http://www.php.net/date – 曜日を数字で得るには?⇒”w” – 0,1,2,3,4,5,6を返す • 今後は、UTF-8, BOMなしで保存するとともに以下を付け足し てください。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> プログラムが入る部分 </body> 2 課題の例~”w”を使った場合 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <?php <?php $a = date("w"); if ($a == 0){ echo "日曜日です<br>"; } elseif ( $a == 1){ echo "月曜日です<br>"; } elseif ( $a == 2){ echo "火曜日です<br>"; } elseif ( $a == 3){ echo "水曜日です<br>"; } elseif ( $a == 4){ echo "木曜日です<br>"; } elseif ( $a == 5){ echo "金曜日です<br>"; } else { echo "土曜日です<br>"; } ?> </body> 3 条件分岐~switch構文~ • switchは、式の値を条件とする – 複数の条件を指定できる – If構文と同じことができる • 読みやすいほうで記述すべき 4 switch構文のルール switch ( 式 ) { case 値1: 式が値1だったときの処理; break; case 値2: 式が値2だったときの処理; break; default: 式が値1でも値2でもないと きの処理; break; } • switch構文はcase句と一緒 に使う • switch式の値が判定され、 caseの値に適合した処理が 実行される • break句に到達すると、 switchブロックを抜ける • break句がない場合、次の case句やbreak句に移る。 • break句は省略できる 5 switch構文例(ファイル名:switch.php) 文字列の一部分を返 す関数 定義済みの定数で、ローカルのPHPバージョン番号 <?php $version = substr(PHP_VERSION, 0, 1); switch ($version) { case 6: print "PHPのバージョンは6です"; break; case 5: print "PHPのバージョンは5です"; break; 6 switch構文例(続き) case 4: print "PHPのバージョンは4です"; break; case 3: print "PHPのバージョンは3です"; break; default: print "PHPのバージョン3~6に該当しません"; } ?> 7 基本的な書き方例(ファイル名:tohoku.php) <?php $pref = "青森"; switch ($pref) { case "青森": print "あなたは東北地方出 身です。"; break; case "岩手": print "あなたは東北地方出 身です。"; break; case "秋田": print "あなたは東北地方出 身です。"; break; case "宮城": print "あなたは東北地方出身 です。"; break; case "山形": print "あなたは東北地方出身 です。"; break; case "福島": print "あなたは東北地方出身 です。"; break; default : print "あなたは東北地方出身 ではありません。"; break; } ?> 8 breakを省略できる例 <?php $pref = "青森"; switch ($pref) { case "青森": case "岩手": case "秋田": case "宮城": case "山形": case "福島": print "あなたは東北地方出身です。"; break; default : print "あなたは東北地方出身ではありません。"; break; } ?> 9 ループ • for構文やwhile構文 • 同じプログラムを繰り返して(ループ)実行さ せるための構文 • 条件式でループする回数を決める 10 for構文 • 初期化の式が実行される • 終了条件を見て、ループを行うかどうかを判定( TRUE/FALSE) • 更新式で、ループ回数の更新(例、カウンタ1減らす ) • TRUEなら、ループの最後まで実行して上に戻る • FALSEなら、ループを終了させる for (初期化式; 終了条件; 更新式) { ループ中の処理 } 11 for構文の例 • 配列変数に格納された文字列を順に表示す る <?php ファイル名:for1.php $aisatsu[] = "おはよう"; $aisatsu[] = "こんにちは"; $aisatsu[] = "こんばんは"; for ($i = 0; $i < 3; $i++){ print $aisatsu[$i] . '<br />'; } ?> 12 for構文の例(入れ子) • 入れ子(nesting)とは – 例えば、ループの中に、ループがあるようなプロ グラム • 九九の表を作ってみましょう – 1かける1から9かける9までを表示する表を作る • 1の段から9の段まで(9回のループ) • 各段には、1から9までをかける(1段につき9回のルー プ) • 表自体は、HTMLのTABLEで構成する • <tr>から</tr>までが1行。<td>から</td>が要素 13 九九の表(for2.php) <?php print "<table border=1>"; for ($i = 1; $i <= 9; $i++) { print "<tr><td>" . $i . "の段</td>"; for ($j = 1; $j <= 9; $j++){ $x = $i * $j; print "<td>" . $i . "*" . $j . "=" . $x . "</td>"; } print "</tr>"; } print "</table>"; ?> 14 九九の表 15 while構文 • Forに似ているが、条件判定だけを行う – 判定を行う変数は、while文の中で変化させてル ープ回数を制御 – ループ回数が決まってなかったり、条件によって 変わる場合は、while文が適している • 無限ループに注意 – 条件文を誤ると永遠にループしてマシンパワーを 使い切ってしまう恐れがある – continue句とbreak句をループ内で使用して、ルー プを抜ける 16 while構文 • 形式 while ( 条件 ) { ループ中の処理; } • continue – ループ内の残り処理をスキップして条件式判定ま で戻る • break – ループ処理を終了する 17 while構文例 • 無限ループとしてルー プを行う • 1から10までの偶数だ けを出力する <?php $i = 1; while (true) { if ($i > 10) { break; } if ($i % 2 == 0) { print $i . "<br />"; } $i++; – $iが10より大きくなった らbreakでループから脱 出する } ?> 18 foreach文 • 指定した配列の要素の数の分だけループす るための構文 – 挙動は、forやwhileと同じ – 連想配列に対応 • 配列のキーが数値でない – PHPにしかない • 形式 foreach(配列名 as 変数名) { ループ中の処理: } foreach(配列名 as キー変数 => 変数名) { ループ中の処理; } 19 foreach構文の例 <?php $prof["name"] = "渡辺恭人"; $prof["born"] = "大阪府"; $prof["age"] = "41"; print "<table border=1>"; foreach($prof as $key => $value){ print "<tr><td>{$key}</td><td>{$value}</td></tr>"; } print "</table>"; ?> 20 課題(1) • 前回の課題をswitch構文を使って書き直して ください。 • できれば、date関数の引数は変更してくださ い。例えば、”D”を使ってみる。 • 以上、作成したプログラムと実行結果をWord にまとめ、メーリングリストに提出。 • ファイル名 例: kadai-0608-1-学籍番号.doc • 締切: 6/14 18:00 21 課題(2) • 1~30までの数字を順に表示し、3の倍数のと き文字を大きくするなどして目立たせて表示 するプログラムを作成しなさい。 • さらに、できれば、3の付く数のときも目立た せて表示させてください。 • 以上、作成したプログラムと実行結果をWord にまとめ、メーリングリストに提出。 • ファイル名 例: kadai-0608-2-学籍番号.doc • 締切: 6/14 18:00 22 課題(3) • 災害関連のアプリケーションに関するサイト( 次ページ)を見て、関心を持ったアプリケーシ ョンについてその内容(災害時のどのような 状況に対して役立つのか、など)について述 べ、感想を述べなさい。 – アプリケーションはいくつでも可 • Wordなどのワープロでまとめて、メールで riho-m-rg11@cuc.ac.jpに提出 • ファイル名 例: kadai-0608-3-学籍番号.doc 23 • 締切: 6/14 18:00 災害関連アプリについてのサイト • 災害対策に役立つアプリ – http://b.hatena.ne.jp/articles/201103/3093 • Androidスマートフォンの災害対策アプリ、活用 術 – http://andronavi.com/2011/03/80790 • 災害関連アプリ特集 – http://www.appbank.net/2011/03/14/iphonenews/232668.php • 災害対策用iPhoneアプリまとめ – http://20kaido.com/archives/2661198.html
© Copyright 2024 Paperzz