関連記事
比較演算子とは?
この記事の動画版はこちら(画像クリックでYoutubeに飛びます)
前回、「条件分岐処理とは何か?」という基本的なことについて解説しました。
前回の記事はこちら
プログラムを書いていると、「こういう場合はこの処理」「別の場合はこの処理」というように、条件によって処理を分けたいことがあります。
例えば、ネットショップの商品画面で、
①在庫があるなら→「残りの在庫数」を出す
②在庫がないなら→「売り切れ表示」を出す
といったように、条件によって表示を切り替えたい場合です。
前回、このような場合に条件分岐処理というものを使うとご説明しました。
今回は1歩進んで、実際の「条件式の書き方」をご説明していきます。
条件式とは?
在庫がある/ない、というのは、プログラム的に言うとこのようになります。
①在庫がある→「在庫数が0より大きい」ということ
②在庫がない→「在庫数が0」ということ
これをプログラムでチェックさせるために、条件式というものを書きます。
さらに、条件式の中では、値同士を比較するために「比較演算子(ひかくえんざんし)」というものを使います。(関係演算子と呼ぶ場合もあります)
比較演算子って、なんだか難しそうな名前ですよね。
でも実際はそれほど難しいものではないので、ぜひこの機会に攻略してしまいましょう!
比較演算子とは?
比較演算子とは、「イコール」や「大なり」「小なり」などの記号のことです。
基本的には以下の6パターンを使います。
①等しい ==
②等しくない !=
③大きい(大なり) >
④以上(大なりイコール) >=
⑤小さい(小なり) <
⑥以下(小なりイコール) <=
例えば、先ほどの在庫のあり/なしを判断する場合は、以下のようになります。
【在庫あり】在庫数が「0よりも大きいかどうか」
③大きい(大なり)を使って、以下のように書く。
$stock > 0
【在庫なし】在庫数が「0かどうか」
①等しいを使って、以下のように書く。
$stock == 0
このように、比較演算子はデータ同士を比較するために使います。
注意!イコールは1つではダメ
ここで1つ注意点ですが「①等しい」の場合は「=」ではなく、「==」のように2つ続けて書きます。
プログラミングでは、「=」は「代入」といって、変数にデータを入れるための記号になります。
「=」を1しか書かなくてバグになっている例をよく見かけるので注意!
また、「>=」や「<=」は、イコールの左右の位置を間違えやすいですが、イコールは必ず右側に書くと覚えておきましょう(大なりイコールと読んだままに書けばOK!)
実際の条件式の書き方
条件式は、ifやelse ifの後にある括弧 () の中に書きます。
先ほどの在庫チェックの条件式を実際に書くと以下のようになります。
※補足説明
前回のおさらいになりますが、if文では、上から順番に条件をチェックしていき、どこかの条件にマッチしたらそれ以降のチェックは行いません。したがって、条件2に来ている時点で、条件1にはマッチしなかった(在庫が10以下だった)ことになり、条件2で「> 0」だったらという指定しかしていないにも関わらず、その値は「1〜10」のどれかになるという訳です。
上のソースでは、比較演算子として「③大きい(大なり)>」のみを使いましたが、他のパターンの書き方も見ておきましょう。
①在庫が10と「等しい」
$stock == 10
②在庫が10と「等しくない」
$stock != 10
③在庫が10より「大きい」(10を含まない)
$stock > 10
④在庫が10「以上」(10を含む)
$stock >= 10
⑤在庫が10より「小さい」(10を含まない)
$stock < 10
⑥在庫が10「以下」(10を含む)
$stock <= 10
以下の4種類は、数値や日付の比較のみに使うことが出来ます。
③(大きい)>
④(以上)>=
⑤(小さい)<
⑥(以下)<=
以下の2種類は、数値や日付に加えて、文字列の比較にも使うことが出来ます。
①(一致)==
②(不一致)!=
文字列の比較
実際の開発では、文字列の比較もよく行います。
例えば、
・パスワードが正しい値と一致しているかどうか
・入力されたメールアドレスが未入力ではないかどうか
このような場合です。
例1)$passwordに入っているデータが「H2xYv4Pj」かどうかをチェックする場合
※実際には、パスワードは暗号化された方式でチェックを行いますが、この例は分かりやすくしています。
例2)$mail_addressが未入力かどうかをチェックする場合
シングルクォーテーションのみを2つ書いた場合は、空っぽ(空文字)という意味になります。
このように、比較演算子を使って文字列の比較も可能です。
条件分岐処理を書くときのコツ
どの比較演算子を使う場合も、条件式の結果は必ず「はい」か「いいえ」になります。
プログラミングでは「真(しん):TRUE」か「偽(ぎ):FALSE」と言います。
if文では、条件式の結果が「真(TRUE)」の場合のみ、その中の処理が実行されます。
条件式を考える際は、式の答えが「はい」だった場合の処理を中括弧 {} の中に書く、というように考えると分かりやすいです。
また、複雑な条件分岐処理の場合は、いきなりコーディングしようとせずに、まずは日本語でコメントだけを書いてみましょう。
そうした方が、流れが整理出来て、処理の抜けがなくなります。
僕も複雑な処理を書くときは、まずはコメントだけで組み立てて、後からそのコメントの通りに処理を実装することも多いです。
まとめ
6種類の「比較演算子」を使って、プログラムに行わせたい処理を分岐させ、制御するのがプログラマーの仕事です。
しかし、分解していくと1つ1つの条件式は「はい」「いいえ」で答えられるシンプルなものです。
シンプルな処理を積み重ねて、大きなシステムを作っているのです。
6種類の比較演算子を覚えて、「こういった比較を行いたい」と思った時に、適切な条件式が書けるようにしていきましょう!
なお、より複雑な条件式として「複数の条件の同時に指定」したり、「関数の戻り値を比較」するといった、より実践的な書き方がありますので、それはまた次の機会にご説明したいと思います。