今日の学習
昨日の続きです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <?php if (isset($_POST["uranai"])) { $age = mb_convert_kana($_POST["age"],"a","EUC-JP"); $error_msg = array(); if (is_numeric($age) == false) { $error_msg[] = "please type numeric."; } elseif ($age < 1 || $age > 120) { $error_msg[] = "please input 1< and >120"; } if (!count($error_msg)) { $sorry_msg = "ng"; $uranai_msg[1] = "you are 10-19."; $uranai_msg[2] = "you are 20-29."; $uranai_msg[3] = "you are 30-39."; $uranai_msg[4] = "you are 40-49."; $sedai = floor($age / 10); if (isset($uranai_msg[$sedai])) { print($uranai_msg[$sedai]); } else { print($sorry_msg); } } } else { $age = 25; } ?> <html> <body> <?php if (count($error_msg)) { foreach($error_msg as $msg) { print($msg); } } ?> <form action = "sample_uranai2.php" method = "POST"> 年齢を教えてください: <input type = "text" name = "age" value = "<?php print(htmlspecialchars($age, ENT_QUOTES));?>"> <input type = "submit" name = "uranai" value = "submit"> </form> </body> </html> |
if (!count($error_msg)) のところで $error_msg が空だった場合に、変数 $sorry_msg 、$uranai_msg にそれぞれ表示させるメッセージを代入します。
次に、入力された年齢 $age を 10 で割り、その商を floor() で端数切り捨てにしたものを $sedai に代入しています。
1 2 3 4 5 |
↑ 次の if 節ではまず isset() で $uranai_msg のインデックスに $sedai を入れた場合の中身の有無を判定します。$uranai_msg には [1] から [4] まではメッセージを入れていますね。
$sedai が 1~4 の場合はそれぞれに対応したメッセージを表示し、それ以外の場合は $sorry_msg を表示します。
1 2 3 | } else { $age = 25; } |
↑ 最後の else 節は一番最初の if (isset($_POST["uranai"])) { にかかっています。$_POST["uranai"] が空の場合ということは、つまりこのフォームが最初に表示されたときですね。要するに初期値として $age に 25 を代入していると。なるほど。

![COURRiER Japon (クーリエ ジャポン) 2010年 10月号 [雑誌]](http://ecx.images-amazon.com/images/I/51NtXDhc0mL._SL160_.jpg)
