Menu
Coddy logo textTech

Logical Operators Part 2

CoddyのPHPジャーニー「基礎」セクションの一部 — レッスン 26/71。

NOT 演算子 (!) は、ブール値をその反対の値に反転させます。何かが true の場合、false になり、その逆も同様です:

<?php
$isLoggedIn = false;

$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(true)

$isLoggedIn = true;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(false)
?>

複数の論理演算子を1つの式で組み合わせることができます。そうする際は、括弧を使用して意図を明確にしてください:

<?php
$age = 25;
$hasTicket = true;
$isVIP = false;

// 入場可能条件:チケットあり AND (成人 OR VIP)
$canEnter = $hasTicket && ($age >= 18 || $isVIP);
var_dump($canEnter); // bool(true)
?>

括弧を使わない場合、&&|| より先に評価されます。しかし、括弧を使うことでコードが読みやすくなり、ミスを防げます。演算子を組み合わせる際は、常に条件を論理的にグループ化して、意図を正確に表現してください。

challenge icon

チャレンジ

簡単

入力から4つの値を読取:整数 temperature、文字列 isRaining"true" または "false" のいずれか)、文字列 hasUmbrella"true" または "false" のいずれか)、および文字列 hasRaincoat"true" または "false" のいずれか)。

文字列の値を "true" と比較してブール値に変換します。

以下の3つの条件を評価し、各結果を var_dump() を使用して新しい行にそれぞれ出力します:

  1. 雨が降っていないかをチェック(! 演算子を使用)
  2. その人が室内に留まるべきかをチェック:雨が降っていてかつ傘もレインコートもない(両方のアイテムに ! を使用)
  3. その人が快適に外に出られるかをチェック:気温が少なくとも 15 度かつ(雨が降っていないまたは傘かレインコートを持っている)

例:

入力が 20truefalse、および true の場合、出力は次のようになります:

bool(false)
bool(false)
bool(true)

説明:

  • !isRaining → !true → false
  • isRaining && !hasUmbrella && !hasRaincoat → true && true && false → false
  • temperature >= 15 && (!isRaining || hasUmbrella || hasRaincoat) → true && (false || false || true) → true && true → true

チートシート

NOT 演算子 (!) は、ブール値を反対の値に反転させます:

<?php
$isLoggedIn = false;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(true)

$isLoggedIn = true;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(false)
?>

複数の論理演算子を1つの式で組み合わせることができます。意図を明確にするために括弧を使用してください:

<?php
$age = 25;
$hasTicket = true;
$isVIP = false;

// Can enter if: has ticket AND (is adult OR is VIP)
$canEnter = $hasTicket && ($age >= 18 || $isVIP);
var_dump($canEnter); // bool(true)
?>

括弧なしで、&&|| より先に評価されます。ただし、括弧を使用することでコードが読みやすくなり、ミスを防げます。

自分で試してみよう

<?php
// 入力値を読み取る
$temperature = intval(fgets(STDIN));
$isRainingStr = trim(fgets(STDIN));
$hasUmbrellaStr = trim(fgets(STDIN));
$hasRaincoatStr = trim(fgets(STDIN));

// TODO: 文字列値を "true" に比較してブール値に変換する


// TODO: var_dump() を使用して3つの条件を評価し、出力する:
// 1. 雨が降っていないかをチェックする
// 2. その人が室内に留まるべきかチェックする(雨が降っていて傘がなくレインコートもない場合)
// 3. その人が快適に外に出られるかをチェックする

?>
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン