練習問題

練習問題を通して本レッスンで学んだことを確認してみましょう!

問題1

年齢を選択すると、その人の生まれた年(西暦)を表示するプログラムを作ってみましょう。
年齢をセレクトボックスで選択して「計算」ボタン押すと結果が表示されるようなプログラムを作ってみてください。

ヒント

本文では、西暦から年齢を調べるプログラムを作りましたがその逆ですね。
今年の西暦年を調べるためには「date("Y")」を使うのでした。

答え

本文で作ったプログラムと逆の動きをするもの(年齢→西暦の変換)です。本文では、while構文を使っていましたが、単純に数字を1から99まで並べるだけならば、for構文を使うのが便利です。

file: 1-age-to-year.php

<?php
if (isset($_GET["age"])) {
    // 年齢から生年を計算して表示
    $age = intval($_GET["age"]);
    $this_year = date("Y");        // 今年を得る
    $r_year = $this_year - $age;
    echo "<p>今年{$age}才→{$r_year}年生まれです。</p>";
}
else {
    // 入力フォームを表示
    echo "<form><select name='age'>";
    echo "<option>年齢を選択してください。</option>";
    for ($i = 1; $i < 99; $i++) {
        echo "<option value='$i'>{$i}才</option>";
    }
    echo "</select>";
    echo "<input type='submit' value='計算'>";
    echo "</form>";
}
?>

以下、実行したところ(2011年現在)。

画面
画面
画面
画面

問題2

画面いっぱいに★マークを表示してください。そのとき、ランダムに★の色を変えてカラフルな画面を演出してみてください。

ヒント

繰り返しにはfor構文を使うのでした。また、ランダムに色を変えるためには、switch構文を組み合わせると良いでしょう。また、<span>タグにstyle属性を指定して色を変えると良いでしょう。

答え

file: 2-star-star-star.php

<div style='font-size:32px;'>
<?php
for ($i = 0; $i < 200; $i++) {
    // 色をランダムに変更
    $r = mt_rand(1, 3);
    switch($r) {
        case 1: $style = "color:orange;"; break;
        case 2: $style = "color:yellow;"; break;
        case 3: $style = "color:red;";    break;
    }
    // ★を出力
    echo " <span style='$style'>★</span>";
    echo " "; // 自動的に改行するようにスペースを出力
}
?>
</div>

実行してみたところ。目がチカチカするほどたくさんの★が出力されます。こんなことができるのもプログラムならではですね。

画面
画面