条件判断

初歩

いま 12時何分かだから 昼ですね。

こういった条件判断は次のように書きます。

<p>いま
<?php
  $h = date("H");
  echo $h;
?>
時何分かだから
<?php
  if ($h < 10)
    echo "朝";
  elseif ($h < 16)
    echo "昼";
  else
    echo "夜";
?>
ですね。</p>

if は「もしも……」, elseif は「そうでくて,もしも……」 else は「そうでなければ……」 という意味です。

C や C++ や JavaScript では else if,Perl や Ruby では elsif と綴りますが,PHP では elseif です。 もっとも,PHP では else if と書いても同じ動作をします。

応用

単に「朝」「昼」などと出すのはおもしろくないので,メッセージを変えてみましょう。

<p>
<?php
  $h = date("H");
  if ($h < 10)
    echo "おはよー";
  elseif ($h < 16)
    echo "こんちは";
  else
    echo "こんばんは";
?>
</p>

さらには画像も加えてみましょう。

<p>
<?php
  $h = date("H");
  if ($h < 10)
    echo '<img src="asa.jpg" alt="朝" /> おはよー';
  elseif ($h < 16)
    echo '<img src="hiru.jpg" alt="昼" /> こんちは';
  else
    echo '<img src="yoru.jpg" alt="夜" /> こんばんは';
?>
</p>

応用(これは前世紀の授業で使った古いものです)

21世紀まであと何時間何分何秒かを表示し, 21世紀に突入したら「21世紀になりました!」と表示を変えるには次のようにします。

<p>
<?php
  $s = mktime(0,0,0,1,1,2001) - time();
  if ($s > 0) {
    $h = (int)($s / 3600);
    $m = (int)(($s % 3600) / 60);
    $s = $s % 60;
    echo "21世紀まであと $h 時間 $m 分 $s 秒";
  } else {
    echo "21世紀になりました!";
  }
?>
</p>

mktime(時, 分, 秒, 月, 日, 年) は1970年元旦からの秒数を求めます。 (int) は小数点以下を切り捨てて整数に直すことを意味します。 / は割り算, % は剰余(割った余り)です。


奥村晴彦

Last modified: 2007-05-20 20:46:39