6章配列&クッキー ブタでもわかるPHP

目次にもどる 学習時間60分

この章では、配列とクッキーについて学びます。

今回も勉強ではなく遊びとして学びます。

占いを作ろう

先ほどのスゴロクを発展して占いを実現したいと思います。

占いでは「1」から「3」までの適当な数から

「1」なら大吉
「2」なら吉
「3」なら凶

と表示します。

イメージ的には以下のようになるでしょう。

配列名 omikuji

1 大吉
2
3

プログラミングでは以下のように入力します。

$omikuji = array(1=>"大吉",2=>"吉",3=>"凶");

また、配列の中身を見たい場合は、以下のように記載します。

echo $omikuji[1];
echo $omikuji[2];
echo $omikuji[3];

それではプログラミングをしましょう。

no04.html

$omikuji = array(1=>"大吉",2=>"吉",3=>"凶");
$i = rand(1,6);
echo "あなたの今日の運勢は、{$omikuji[$i]}です。";

どうでしょうか。
占いプログラムがたった3行で実現することができました。

1日の間は、同じ結果にしよう!

今日の運勢ですので、同じ日であれば、ずっと同じ結果にしたいものですね。
そこでクッキーというものを使って、同じ日であれば同じ結果を表示されるようにアレンジします。

クッキーとは、ホームページ作成者が、Webブラウザに一時的にデータを書き込んで保存させるしくみです。

もし、uranaiと言う入れ物があれば、その内容を占いの結果として表示します。
なければ
setcookie関数を使って、uranaiと言う入れ物に6秒保存します。
以下のようにすることで、同じ日の場合は同じ結果になります。
if( !isset($_COOKIE["uranai"])){
    $i = rand(1,3);
    setcookie("uranai",$i,time()+6); //6秒
}else{
    $i = $_COOKIE["uranai"];
}
$omikuji = array(1=>"大吉",2=>"吉",3=>"凶");
echo "あなたの今日の運勢は、{$omikuji[$i]}です。";

上記は6秒間同じ結果ですが、もっときちんと計算をすると24:00まで同じ結果にすることが可能です。

<?
if( !isset($_COOKIE["uranai"])){
    $i = rand(1,3);
    setcookie("uranai",$i,time()+24*60*60-date('H')*60*60-date('i')*60-date('s'));
}else{
    $i = $_COOKIE["uranai"];
}
$omikuji = array(1=>"大吉",2=>"吉",3=>"凶");
echo "あなたの今日の運勢は、{$omikuji[$i]}です。";
?>
   このエントリーをはてなブックマークに追加