読者です 読者をやめる 読者になる 読者になる

Webデザインの勉強 ハロートレーニング 受講生のためのWebデザインの勉強補足ブログ

条件分岐 - if文

もし〜なら if文

  • 基準で枝分かれするという発想
枝分かれの仕組みは「条件分岐」
  • 昼だったら「こんにちは」と表示
  • 夜だったら「こんばんわ」と表示
  • 18時を基準にする


条件に応じて枝分かれする処理

  • 条件:いまの時刻は18時以降である
  • 条件を満たす:「こんばんは」と表示
  • その意外の場合:「こんにちは」と表示

if文とは

  • 条件に応じて実行する処理を記述
  • if文は、「もし、条件xにあてはまるのであれば、Aの処理をする」というように処理を分岐させます
  • その条件x を記述するためには関係演算子や論理演算子などを使い、その結果がTRUE(あてはまる)の場合は、Aの処理を実行します



if ( 条件x ) {
 条件xがTRUEの場合に実行する処理A
}
※条件xがTRUEの場合処理Aを実行し、そうでない場合は実行されません

<?php
  // 変数$xに10を代入
  $x = 10;
  
  // 変数$yに10を代入
  $y = 10;
  
  // $xと$yが等しいか否かを判定
  if( $x === $y ) {
    // $xと$yが等しい(TRUE)ため、「PHPは、楽しいです!」が出力されます
    echo 'PHPは、楽しいです!';
  }
<?php
  // 変数$xに10を代入
  $x = 10;
  
  // 変数$yに10を代入
  $y = 10;
  
  // $xは$yより小さいか否かを判定
  if( $x < $y ) {
    // $xは$yより小さくない(FALSE)ため、「PHPは、楽しいです!」は出力されません
    echo 'PHPは、楽しいです!';
  }
  • f文の条件を条件式と呼びます
  • 条件式は、結果がboolean型のTRUEかFALSEでなければいけません
if・・・else文
  • 「もし、条件xがtrueの場合、処理Aを実行し、FALSEの場合、処理Bを実行」というときの文法です



if ( 条件x ) {
 条件xがTRUEの場合に実行する処理A
} else {
 条件xがFALSEの場合に実行する処理B
}

<?php
  // 変数$xに70を代入(合格点)
  $x = 70;
  
  // 変数$yに80を代入(テストの点)
  $y = 80;
  
  // $y(テストの点)が$x(合格点)より上か否かの判定
  if ( $x <= $y ) {
    echo 'テストは合格!'; 
  } else {
    echo 'テストは不合格・・・';
  }


「いまの時間は18時以降?」の条件を組み立てる

  • date関数の最初のパラメータに「G」を指定すると、0〜23までの「時」が返されます
  • この数値を「変数 $hour」に格納して、時刻が18時を過ぎているかどうかの判断に使います
  • if文の()には、この値「 $hour」が、18以上かどうかかを示す条件文($hour >= 18)を記述します
<?php
  $hour = date( 'G' );
  
  if ( $hour >= 18 ) {
  	echo 'こんばんは';
  } else {
  	echo 'こんにちは';
  }


一致しないことを調べる条件
<?php
  $hour = date( 'G ');
  
  if ( $hour != 12 ) {
  	echo 'いまは昼休みではありません!';
  }
?>


  • 早朝の5時より前も「こんばんは」と表示したい場合
<?php
  $hour = date( 'G' );
  
  if ( $hour >= 18 or $hour < 5 ) {
  	echo 'こんばんは';
  } else {
  	echo 'こんにちは';
  }
if・・・else if文
  • もし、条件xがTRUEの場合、処理Aを実行し、そうではない場合でもし条件yがTRUEの場合、「処理Bを実行」というときの文法です



if ( 条件x ) {
 条件xがTRUEの場合に実行する処理A
} else if ( 条件y ) {
 条件yがTRUEの場合に実行する処理B
}

<?php
  $x = 90;    // 変数$xに90を代入(判定A)
  $y = 70;    // 変数$yに70を代入(判定B)
  $z = 60;    // 変数$zに60を代入(判定C)
  $i = 65;    // 変数$iに65を代入(テストの点)

  if ( $i >= $x ) {  // $i(テストの点)が$x以上(判定A)か否かの判定
    echo '判定A!'; 
  }
  else if( $i >= $y ){  // $i(テストの点)が$y以上(判定B)か否かの判定
    echo '判定B!';
  }
  else if( $i >= $z ){  // $i(テストの点)が$z以上(判定C)か否かの判定
    echo '判定C!';
  }
  else{  // $i(テストの点)が上記以外の場合
    echo 'テストは不合格・・・';
  }

「もしも」が増えたら switch文

  • 条件が多い処理にif文は不向き
  • 例:曜日ごとに違うメッセージを表示する
switch文の使い方
  • 選択肢の多い処理をすっきり扱う
  • ある変数$xが値1ならば、処理A、値2ならば、処理B、値3ならば、処理C・・・」というように処理を分岐させることができます
  • 「default」には、どれにも当てはまらなかった時の処理を記述します
  • case処理の中に、breakを書かないと、判定がTRUEとなるcaseの処理が実行された後、それ以降のcaseの処理も判定に関係なく、全て通ってしまいます
  • 通常は、breakを書くことにより、どこかのcase処理でTRUEとなり、処理がされたら、それ以降のcase処理を行わないようにします
switch ( 変数または式 ) {
 case1 :
  変数または式の値が値1の場合に実行する処理A
  break;
 case2 :
  変数または式の値が値2の場合に実行する処理B
  break;
 case3 :
  変数または式の値が値3の場合に実行する処理C
  break;
 default :
  変数または式の値が値1から値3以外の場合に実行する処理D
}
曜日ごとのメッセージ
  • 日曜日:今日は定休日です
  • 月曜日:9時〜22時まで営業
  • 火曜日:9時〜22時まで営業
  • 水曜日:特売日! 7時〜24時まで営業
  • 木曜日:9時〜22時まで営業
  • 金曜日:9時〜22時まで営業
  • 土曜日:12時〜20時まで営業


これを「if文」で処理しようとすると「elseif」が多くなり、何に対しての「それ以外は」なのかわかりにくくなります。

選択肢から1つを選ぶ仕組みがあると便利
  • 0(日曜日)の場合:「今日は定休日です」と表示
  • 1(月曜日)の場合:「9時〜22時まで営業」と表示
  • 2(火曜日)の場合:「9時〜22時まで営業」と表示
  • 3(水曜日)の場合:「特売日! 7時〜24時まで営業」と表示
  • 4(木曜日)の場合:「9時〜22時まで営業」と表示
  • 5(金曜日)の場合:「9時〜22時まで営業」と表示
  • 6(土曜日)の場合:「12時〜20時まで営業」と表示


「曜日」という基準を使って、当てはまる選択肢の処理を実行すればよい。

  条件分岐(曜日番号が) {
  	0の場合:「今日は定休日です」と表示
  	3の場合:「12時〜20時まで営業」と表示
  	6の場合:「12時〜20時まで営業」と表示
  	それ以外の場合:「9時〜22時まで営業」と表示
  }
曜日ごとに挨拶を切り替える
  • 「break文」は、「switch文」から抜けるための命令です
<?php
switch(曜日番号){
    case 0:
  	 echo '今日は定休日です';
  	 break;
    case 3:
  	 echo '特売日! 7時〜24時まで営業';
  	 break;
    case 6:
  	 echo '12時〜20時まで営業';
  	 break;
    default:
  	 echo '9時〜22時まで営業';
}
  • 実際の記述は、以下のようになります
<?php
  $w = date ( 'w' );
  
  switch ( $w ) {
    case 0:
      echo '今日は定休日です';
      break;
    case 3:
      echo '特売日! 7時〜24時まで営業';
      break;
    case 6:
      echo '12時〜20時まで営業';
      break;
    default:
      echo '9時〜22時まで営業';
}
  • 「月曜日」の場合


switch文で「おみくじ」を作る

  • 「mt_rand関数」は、指定した範囲の数値をランダムに作成します
  • 「mt_rand(1, 5)」と指定すると、1から5までの数値がランダムに作成されます
<?php
$a = mt_rand ( 1, 5 );
  
switch ( $a ) {
  case 1:
      echo '大吉';
      break;
  case 2:
      echo '中吉';
      break;
  case 3:
      echo '小吉';
      break;
  case 4:
      echo '';
      break;
  default:
      echo '';
}


広告を非表示にする