リスを倒す 『初めてのPHP,MySQL,JavaScript&CSS』

『初めてのPHP,MySQL,JavaScript&CSS』勉強奮闘記

4-2. PHPの式と制御の流れ②関係演算子と式条件

のってるときに進めます。(明日更新できないだけだけど…)
4章おわたら一回おさらいしよう…

1-1. 関係演算子とは


関係演算子は、2つのオペランドをテストしTRUEかFALSEのBoolean値による結果を返します。TRUEかFALSEを返すということは、等価演算子、比較演算子、論理演算子が関わってきます。
前回は各演算子って何があるの?というのを勉強しましたが、ここではサンプル式を見ながら実際にどう結果が出力されるのか見ていきたいと思います。

1-2. 等価演算子と厳密等価演算子


『==』で表すのが等価演算子、そしてややこしくて注意なのが、=が一つだと代入演算子でしたね。
そこでなんと厳密等価演算子という、イコールが3つver出てきます。非常にややこしい。。。眼鏡してなかったら2こなのか3こなのか判別つかんレベルです。

では、==と===を使ったコードをみてみます。


<?php
$a = "1000";
$b = "+1000";
if ($a == $b) echo "1";
if ($a === $b) echo "2";
?>

結果は...1つめのifステートメントがTRUEと評価し”1”を返しています。
f:id:taro-blog2323:20160719204356p:plain
理由としては、$aと$bがまず数値に変換され、1000と+1000が数として同じとみなされたためです。

一方で2つめのifステートメントでは厳密等価演算子を使っています。厳密等価演算子は、型の変更が行われないので、異なるものとして評価され何も出力されません。(いやいや等価さんはTRUEにしても、我々厳密という名のもとに厳密にみると+ついてるし違うじゃん?ってことですかね)
PHPの型変更を行わせたくない場合は厳密等価演算子を使って、このPHPのふるまいをオフにすることができます。

1-3. 比較演算子


比較演算子を使用すると等価性や不等価性のテスト以上のことが行えます。


<?php
$a = 2; $b = 3;
if ($a > $b) echo "$a is greater than $b";//FALSE
if ($a < $b) echo "$a is less than $b";//TRUE
if ($a >= $b) echo "$a is greater than or equal to $b";//FALSE
if ($a <= $b) echo "$a is less than or equal to $b";//TRUE
?>

$aが2で$bが3なので次の出力が出ます。
f:id:taro-blog2323:20160719210149p:plain

1-4.論理演算子


論理演算子は真か偽の結果を生み出すので、Boolean演算子とも言います。


<?php
$a = 1; $b = 0;
echo ($a AND $b) . ;//両方のオペランドがTRUEならTRUE
echo ($a or $b) . ;//いずれかのオペランドがTRUEならTRUE
echo ($a XOR $b) . ;//2つのオペランドの1つがTRUEならTRUE
echo !$a . ;//オペランドがFALSEならTRUEその逆も然り
?>

上から、null、TRUE、TRUE、nullと結果がでます。
f:id:taro-blog2323:20160719210442p:plain

また、or演算子は1つめのオペランドがTRUEと評価されたら、「はい、しゅうりょー」といって2つめのオペランドを評価しないので、ifステートメントで使うときたまに問題を起こすことがあるそうです。わたしと一緒でせっかち野郎なのか…

2-1. 条件を使用するとダイナミックなページが作れる


リスでおなじみダイナミックです。条件を使用することである事柄に関して質問を投げかけて返ってくる答えに対して色々な方法で答えることができます。ずっとPHPの勉強してますが、ようやくPHPっぽい感じがします。ある条件によって、ページの内容を変えたりすることができるやーつですね、たぶん。。少し興奮してきました。

2-2.ifステートメント


プログラムフローを一車線道路で考えるそうです。
ifステートメントは「ある条件がTRUEの場合に通ってくださいねーという迂回路」みたいなものです。
条件がTRUEの時に迂回路に入り、元のルートに合流したら再びそのルートを進みます。
TRUEでない場合は迂回路を無視してそのまま進みます。

◎ifステートメントの書きかた


if(条件){
条件が真であれば実行

2-3.elseステートメント


条件がTRUEでない場合、そのままメインのプログラムに戻らずに違う経路に進ませたいときにelseステートメントを使います。なので、ifステートメントとコンビで使います。

◎elseステートメントの書きかた


if(条件){
条件が真であれば実行

else{
条件が偽であれば実行

どちらか必ず実行され、両方が実行されるまたは両方実行されないというのは起きません。

2-4.elseifステートメント


複数の条件で分岐させるときに使うのがelseifステートメントです。

◎elseifステートメントの書きかた


if(条件){
条件1が真であれば実行

elseif(条件2){
条件2が真であれば実行

else{
条件が偽であれば実行
}

elseifでいくらでも条件を追加できます。条件分岐は上から優先的に実行されるのでそこは注意です。

2-5.switchステートメント


1つの変数や式の結果が複数の値をもつ可能性があり、そこから別々の関数を呼び出すときに使います。

◎switchステートメントの書きかた


swich(変数や式){
 case 値1:
 処理1;
 break;

 case 値2:
 処理2;
 break;

 default:
 デフォルトの処理;
}


ながくなりましたが、今回はいじょうです