概要
if の条件式の中身を作るのが比較演算子だ。== (等しい)、!= (等しくない)、< > <= >= (大小比較) の 6 種類を覚えれば、ほとんどの条件式は書ける。比較演算子の結果は必ず true か false のどちらか (真偽値) で、これを if がそのまま条件として読む。
ここで PHP 学習者が最初にぶつかる 超重要なハマりどころ が、== (緩い比較) と === (厳密比較) の違い。== は型を揃えてから比較するため、0 == "0" は true になる (文字列を数値に変換して比較)。一方 === は 型まで一致しないと真にならない ので、0 === "0" は false。HTTP リクエストの値や DB の戻り値は文字列で来るため、ここで == と === の使い分けを誤ると、見えないバグの温床になる。基本方針は「迷ったら === を使う」。
PHP 7 までは 0 == "abc" が true という強烈な挙動があった (文字列が数値 0 に変換されていた)。これが PHP 8 で false に修正されたのは PHP の歴史的にも大きな変更で、古い記事のサンプルコードを写経すると現代の PHP で結果が違って驚くことがある。この章では基本 6 演算子を体に入れつつ、== と === の違いを「そういう罠がある」と頭に焼き付けるのが目的。
学習目標
==!=<><=>=の意味を言える- 比較結果が真 / 偽になると理解する
ifの条件式に比較演算子を組み合わせて使える
ドリル
| no | 内容 |
|---|---|
| 01 | 2 つの整数が等しいか判定 (yes / no) |
| 02 | 2 つの整数のどちらが大きいか判定 (a / b / equal) |
📝 演習: ドリル 01 — 2 つの整数が等しいか
問題
標準入力で 2 行 受け取り、それぞれを整数として読みます。
2 つが 等しい なら yes、等しくない なら no と出力してください。
入力例:
5
5
期待される出力:
yesヒント
fgets(STDIN)を 2 回呼んで 2 行読む- 各行を
trim()して(int)で整数化 $a == $bで等しいか判定
📝 演習: ドリル 02 — どちらが大きいか
問題
標準入力で 2 行 受け取り、それぞれを整数として読みます (1 行目を a、2 行目を b とする)。 以下のルールで出力してください。
| 条件 | 出力 |
|---|---|
| a の方が大きい | a |
| b の方が大きい | b |
| 等しい | equal |
入力例:
3
7
期待される出力:
bヒント
$aと$bを 2 行から読むif / elseif / elseで 3 分岐><==を使い分ける