概要

実際の条件は「年齢が 18 以上 かつ 会員登録済み」のように、複数の真偽値を組み合わせて判定したい場面がほとんど。これを表現するのが論理演算子で、&& (and: 両方が真) / || (or: どちらかが真) / ! (not: 真偽を反転) の 3 つを覚える。比較演算子で作った $age >= 18 のような小さな条件を、論理演算子で接着して大きな条件を組み立てるイメージ。

論理演算子のもう 1 つの重要な性質が 短絡評価 (short-circuit) だ。A && BA が偽の時点で結果が偽に確定する ので、PHP は B を評価しない。同じく A || B は A が真の時点で B は評価されない。これを利用して、if ($user !== null && $user->isAdmin()) のように「左でガードしてから右で本処理」と書くと、null 参照エラーを避けられる。逆に「右側に副作用があるコード」を書くと、左の結果次第で実行されたりされなかったりして、思わぬバグになる。

PHP には && || の他に キーワード版and or も存在する。一見同じに見えるが、&&and演算子の優先順位が違う。たとえば $a = true && false$afalse になるが、$a = true and false$atrue になる (= より and が弱いため代入が先)。歴史的事情で残っているが、現代のコードでは混乱を避けるため && || を使うのが鉄則だ。

学習目標

ドリル

no 内容
01 && で「0 以上 かつ 100 以下」を判定
02 \|\| で「Sat または Sun」を判定
03 ! で「偶数ではない」を判定

演習: ドリル 01 — `&&` で範囲判定

問題

標準入力で整数を 1 行受け取り、 0 以上 かつ 100 以下 なら valid を、そうでなければ invalid を出力してください。

入力例:

50

期待される出力:

valid

ヒント

演習: ドリル 02 — `||` で週末判定

問題

標準入力で曜日を 1 行受け取ります。値は Mon Tue Wed Thu Fri Sat Sun のいずれかです。 Sat または Sun なら weekend を、そうでなければ weekday を出力してください。

入力例:

Sat

期待される出力:

weekend

ヒント

演習: ドリル 03 — `!` で奇数判定

問題

標準入力で整数を 1 行受け取り、偶数ではない (= 奇数) なら odd を、 そうでなければ even を出力してください。

判定には ! 演算子を必ず使う こと。 つまり「偶数」を表す条件式を作り、それを ! で反転して使います。

入力例:

7

期待される出力:

odd

ヒント

この章を AI に聞く

  1. 「ch04 — 論理演算子」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch04 — 論理演算子」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch04 — 論理演算子」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch04 — 論理演算子」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE