こんにちは(このメッセージは朝・昼・夜で変わります)。
こういった条件判断は次のように書きます。
<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>
if,elseif,else
が複数の命令を含む場合は,上のような中括弧 {...} が必須になります。
画像も加えてみましょう。あらかじめ朝・昼・夜の画像 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