条件判断

初歩

こんにちは(このメッセージは朝・昼・夜で変わります)。

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

<p>
<?php
  $h = date("H");
  if ($h < 10)
    echo "おはようございます";
  elseif ($h < 18)
    echo "こんにちは";
  else
    echo "こんばんは";
?>
</p>

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

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

上のプログラムは下のように書いてもかまいません。このほうが読みやすいかもしれません。

<p>
<?php
  $h = date("H");
  if ($h < 10) {
    echo "おはようございます";
  } elseif ($h < 18) {
    echo "こんにちは";
  } else {
    echo "こんばんは";
  }
?>
</p>

ifelseifelse が複数の命令を含む場合は,上のような中括弧 {...} が必須になります。

応用

画像も加えてみましょう。あらかじめ朝・昼・夜の画像 asa.jpg,hiru.jpg,yoru.jpg を用意しておきます。

<p>
<?php
  $h = date("H");
  if ($h < 10)
    echo '<img src="asa.jpg" alt="朝" /> おはようございます';
  elseif ($h < 18)
    echo '<img src="hiru.jpg" alt="昼" /> こんにちは';
  else
    echo '<img src="yoru.jpg" alt="夜" /> こんばんは';
?>
</p>

このように,echo の文字列の中にさらに " が入る場合は,echo "..."; の代わりに echo '...'; を使うのが一つの手です。もう一つの手は,内側の "\" と書きます:

<p>
<?php
  $h = date("H");
  if ($h < 10)
    echo "<img src=\"asa.jpg\" alt=\"朝\" /> おはようございます";
  elseif ($h < 18)
    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) は小数点以下を切り捨てて整数に直すことを意味します。/ は割り算,% は剰余(割った余り)です。

"あと $h 時間 $m 分 $s 秒" のように "..." の中には $h などの変数をそのまま書き込むことができます。ただし,$h の直後にスペースがないと誤動作することがありますので,スペースを入れたくないときは "あと{$h}時間{$m}分{$s}秒" のように {...} で囲んでおきます。なお,'...' の中には変数を書き込めません。


奥村晴彦

Last modified: 2009-08-04 10:03:13