PHP | 条件分岐

If文を使って、条件分岐のPHPプログラムを作る

★2013/3/9の記事にある、おみくじのプログラムを、if文とcookieを使って条件分岐のプログラムに変える。

条件:指定した時間内は、おみくじの結果を同じにする。
今回は、2分間は何度更新をしても同じ結果が出るようなプログラムを作りました。但しプログラムの条件に
cookieを使っているため、別のブラウザ・PC等で見た場合には、2分以内であってもおみくじの結果は変わります。

作ったプログラム:http://133.242.133.66/matsuhashi/fortune/test2.php

phpファイル

<?php

  //バッファ開始
  ob_start();

  //タイムゾーンの指定(警告を出さないための記述)
    date_default_timezone_set('Asia/Tokyo');

  //Smartyを使うための準備
require_once('/opt/www/Smarty-3.1.12/libs/Smarty.class.php');

  //Smartyインスタンスを作る
  $smarty = new Smarty();
//var_dump($smarty);

  //Smartyにテンプレートファイルの場所を教える
  $smarty->template_dir='/home/matsuhashi/htdocs/fortune/templates/';
  // Smartyの作業場所を指定する
  $smarty->compile_dir = '/home/matsuhashi/htdocs/smarty/fortune/templates_c/';

  //おみくじ箱を用意する
  $fortunes = array(
    0 =>'大吉',
    1 =>'中吉',
    2 =>'小吉',
    3 =>'末吉',
    4 =>'小凶',
    5 =>'凶',
    6 =>'大凶',
);
//var_dump($fortunes);
//var_dump( count($fortunes) );

  //おみくじを引く
  if ( true === isset($_COOKIE['fortune'])) {
echo'Trap 1';
      //coolieの値をそのまま$iに入れる
    $i = $_COOKIE['fortune'];
  } else { //そうじゃなければ 
echo'Trap 2';
      $i = mt_rand(0, count($fortunes) -1);
    //cookieに、寿命2分で、$iの値を設定しておく
    setcookie('fortune', $i, time() + 120);
  }

  //もし、の終わり。
//var_dump($i);

 //var_dump($i);
  $kuji = $fortunes[$i];
//var_dump ( $kuji );

  //おみくじの結果を表示する

  //おみくじの結果をSmartyに渡す
  //$smarty->assign(識別子名、入れて欲しいもの);
  $smarty->assign('kuji',$kuji);
  //表示してもらう
  $smarty->display('index.tpl');

  //バッファ出力&解放
  ob_end_flush();

PHPの勉強で重要なこと
★まず、作りたいプログラムを、コメントで記述する
★どの行が、何を動かしているのかを意識する。

if文の基本:分岐の基本形
・・・・・・・・・・・・・・・・・・・・・・・・
if (条件式) {
条件式がteue(真)の時の処理
} else { //そうじゃなければ
 条件式がfalse(偽)の時の処理
}
________
条件式が成立たないなら何もしない

if (条件式) {
条件式がteue(真)の時の処理
}
_________
条件式と条件式2がどっちもfalse(偽)の時の処理

if (条件式) {
条件式がteue(真)の時の処理
} else if (条件式2) {
条件式2がtrue(真)の時の処理
 } else {//そうじゃなければ
 条件式と条件式2がどっちもfalse(偽)の時の処理
 }
if(条件式) {
if (条件式2) {
条件式がtrueで、条件式2もtrueの時の処理
}
}
__________________________
条件式を書くときは、trueとfalse、どの結果をtrueとして、
どの結果をfalseとするかを分かりやすい名前・コメントアウトで記述する。

"条件にあてはまる時だけ処理をする"というような記述がメジャーであり、
そう記述することで"条件に当てはまらない時"の処理を記述しなくて良くなる。

・・・・・・・・・・・・・・・・・・・
PHPの教科書・辞典として、とても有難いWebサイト: http://php.net/manual/ja/index.php