論理演算子 パート1
CoddyのPHPジャーニー「基礎」セクションの一部。レッスン 25/71。
論理演算子を使うと、複数のブール式を1つに組み合わせることができます。これは、複数のconditionを同時に確認する必要がある場合に不可欠です。
AND 演算子(&&)は、both の条件が true の場合にのみ true を返します。
<?php
$age = 25;
$hasLicense = true;
$canDrive = $age >= 18 && $hasLicense;
var_dump($canDrive); // bool(true)
$age = 16;
$canDrive = $age >= 18 && $hasLicense;
var_dump($canDrive); // bool(false) - 年齢条件が失敗
?>OR演算子(||)は、at least 1つの条件が真の場合にtrueを返します。
<?php
$isWeekend = true;
$isHoliday = false;
$dayOff = $isWeekend || $isHoliday;
var_dump($dayOff); // bool(true) - 週末が true
$isWeekend = false;
$dayOff = $isWeekend || $isHoliday;
var_dump($dayOff); // bool(false) - 両方とも false
?>&& は「両方とも true でなければならない」、|| は「少なくとも 1 つが true でなければならない」と考えてください。次のレッスンでは、NOT 演算子と複数の論理演算子を組み合わせる方法について学びます。
チャレンジ
簡単入力から4つの値を読み取ります:整数の age、文字列の hasTicket("true" または "false")、文字列の isMember("true" または "false")、文字列の hasInvitation("true" または "false")。
文字列の値を "true" と比較して、ブール値に変換します。
次の2つの条件を評価し、それぞれの結果を var_dump() を使って、新しい行に1つずつ出力します:
- その person が event に入場できるかを確認します:少なくとも18歳であり、チケットを持っている必要があります AND
- その person が無料で入場できるかを確認します:member であるか、invitation を持っている必要があります OR
例:
入力が 25、true、false、true の場合、出力は次のようになります:
bool(true)
bool(true)説明:
- 25 >= 18 AND hasTicket は true → true
- isMember は false OR hasInvitation は true → true
自分で試してみよう
<?php
// 入力値を読み取る
$age = intval(fgets(STDIN));
$hasTicket = trim(fgets(STDIN));
$isMember = trim(fgets(STDIN));
$hasInvitation = trim(fgets(STDIN));
// TODO: 文字列の値を "true" と比較することでブール値に変換する
// TODO: その人がイベントに入場できるか確認する(18歳以上 AND チケットを持っている)
// TODO: その人が無料入場できるか確認する(メンバーである OR 招待状を持っている)
// 結果を var_dump() を使って出力する
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: PHPオンラインコンパイラ