あーる学習帳

自分が勉強したことや気になることなど、99%自分用です。コードを書いてるのでPCから閲覧を推奨。

PHP入門:ifとswitchで条件分岐

昨日おとといとそこまで勉強しているわけではないので、今夜は進めます。

 

#8

いよいよif文を使った条件分岐について。

$score=85; 

$scoreを宣言。「$scoreが80より大きい場合、画面にgreat!と出力する」とするには…

if ($score > 80){

echo "great!!";

こう書けばよい。また、「$scoreが80より大きい場合」を満たさなかった場合の処理をつけ足すには…

if ($score > 80){

echo "great!!";

}  else{

echo "so so ...";

}

これでOK。

ということで、if文の基本は以下の通りとなる。

if (【条件】) {

【真の場合 = 条件を満たす場合の処理】 

}  else {

【偽の場合 = 条件を満たさない場合の処理】

}

 ()や{}がどっちがどっちなんだかわからなくなりそうだけど覚える。

また、条件をつけ足す場合の例と書き方は以下の通り。

「scoreが80以上の場合はgreat、70以上80未満の場合はso so ...、70未満の場合はbadと出す」というときには…

if (【条件A】) {

【条件Aについて真の場合 = 条件Aを満たす場合の処理】 

}  elseif (【条件B】){

【条件Bについて真の場合 = 条件Bを満たす場合の処理】

}

}  else {

【偽の場合 = どちらの条件も満たさない場合の処理】

}

 こう書けばよい。

今回使った不等号記号を比較演算子と呼ぶ。以下のものがある。

A>B→AはBより大きい

A<B →AはBより小さい(未満)

A>=B→AはB以上

A<=B→AはB以下

A==B→AとBは等しい(値だけを比較して)

A===B→AとBは等しい(値とデータ型を比較して)

A!=B→AとBは等しくない(値だけを比較して)

A!==B→AとBは等しくない(値とデータ型を比較して)

特に後半、値だけを比較するのか、値とデータ型を比較するのかで使い分けがあるので要注意。

論理演算子についてもチェック。

★And 【A and B→AとB(同時に満たす)】

 and && 

★or【A or B→AもしくはB(AとBどちらかを満たす)】

or ||

★否定

!

 

#9

真偽値について。

データ型によって、どんな場合でも真偽値を見ると必ずTrue/Falseのどちらかを取るようになっているとのこと。

★Falseとなる場合

文字列…空の文字列、0の文字列だった場合

数値…0もしくは0.0の場合

論理値…falseの場合

配列…要素の数が0だった場合

null…何があってもfalse

上記の場合以外はTrueとなる。

これを知っていると、次のコードの意味が分かる。

$x=5;

if ($x){

  echo "great";

これは「$xがTrueだった場合にgreatと表示する」ということ。

$xは数値型で0ではないので、真偽値で見た時にはTrueを取っている。

もちろんこのように書いてもOK。

$x=5;

if ($x == True){

  echo "great";

 ついでに三項演算子についても勉強。

$max = ($a > $b) ? $a : $b

 …なんじゃこりゃ。

「($a > $b)が真だったら$aを、偽だったら$bを$maxに入れる」ということ。

if文を使って同じ意味のことを書くと…

if ($a > $b) {

  $max=$a;

} else {

  $max=$b;

となる。

 

#10

switch文による条件分岐を扱う。以下のコードで考えていく。

$signal="red" ;

switch ($signal) {

  case "red":

    echo "stop!!";

    break;

  case "yellow":

    echo "caution!!";

    break;

  case "blue":

    echo "go!!";

    break;

  defalut:

    echo "wrong signal";

    break;

}

 $signalの値によって処理を変えている。redなら画面に「stop!!」、yellowなら「caution!!」、blueなら「go!!」と表示するということになる。

また、最後のDefalutは「指定した値がすべてのcaseに当てはまらなかった場合に行う処理」を意味している。また、caseとbreakの各処理が終わるところには必ずbreakを書くこと

条件を並べて書く場合は次のように書けばよい。

$signal="green" ;

switch ($signal) {

  case "red":

    echo "stop!!";

    break;

  case "yellow":

    echo "caution!!";

    break;

  case "blue":

  case "green";

    echo "go!!";

    break;

  defalut:

    echo "wrong signal";

    break;

}

breakに当たるまで処理が続くことを利用しているんだと思う。

だったら、blueとgreenは最後の処理が同じだけどblueのときだけ行う処理もあるという場合はcase "blue";とcase "green";の間にblue特有の書けばいいのでは…?

 

今夜はここまで、次はwhileループからやります。

ブログにまとめないんだったらPHP入門は3日もあれば終わったんだろうけど、ちゃんとまとめて時間をかけてやると決めているのでちゃんとまとめながらやっていくぞ。