Menu
Coddy logo textTech

Operatory logiczne — część 2

Część sekcji Podstawy ścieżki PHP w Coddy. Lekcja 26 z 71.

Operator NOT (!) zmienia wartość logiczną na przeciwną. Jeśli coś ma wartość true, zmienia się na false, i na odwrót:

<?php
$isLoggedIn = false;

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

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

Możesz połączyć wiele operatorów logicznych w jednym wyrażeniu. Gdy to robisz, używaj nawiasów, aby jasno pokazać swoje intencje:

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

// Może wejść, jeśli: ma bilet ORAZ (jest pełnoletni LUB jest VIP-em)
$canEnter = $hasTicket && ($age >= 18 || $isVIP);
var_dump($canEnter); // bool(true)
?>

Bez nawiasów && jest obliczane przed ||. Jednak używanie nawiasów ułatwia czytanie kodu i zapobiega błędom. Łącząc operatory, zawsze grupuj warunki logicznie, aby dokładnie wyrazić to, co masz na myśli.

challenge icon

Wyzwanie

Łatwy

Wczytaj z wejścia cztery wartości: liczbę całkowitą temperature, ciąg znaków isRaining (równy "true" albo "false"), ciąg znaków hasUmbrella (równy "true" albo "false") oraz ciąg znaków hasRaincoat (równy "true" albo "false").

Przekształć wartości tekstowe na wartości logiczne, porównując je z "true".

Sprawdź następujące trzy warunki i wypisz wynik każdego z nich za pomocą var_dump(), każdy w nowej linii:

  1. Sprawdź, czy NIE pada (użyj operatora !)
  2. Sprawdź, czy dana osoba powinna zostać w domu: pada ORAZ osoba nie ma ani parasola, ani płaszcza przeciwdeszczowego (użyj ! w odniesieniu do obu rzeczy)
  3. Sprawdź, czy dana osoba może komfortowo wyjść na zewnątrz: temperatura wynosi co najmniej 15 ORAZ (nie pada LUB osoba ma parasol albo płaszcz przeciwdeszczowy)

Przykład:

Jeśli dane wejściowe to 20, true, false i true, wynik powinien być następujący:

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

Wyjaśnienie:

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

Spróbuj swoich sił

<?php
// Odczytaj wartości wejściowe
$temperature = intval(fgets(STDIN));
$isRainingStr = trim(fgets(STDIN));
$hasUmbrellaStr = trim(fgets(STDIN));
$hasRaincoatStr = trim(fgets(STDIN));

// TODO: Przekształć wartości tekstowe na wartości logiczne, porównując je z "true"


// TODO: Sprawdź i wypisz trzy warunki za pomocą var_dump():
// 1. Sprawdź, czy NIE pada deszcz
// 2. Sprawdź, czy osoba powinna zostać w środku (pada deszcz ORAZ nie ma parasola ORAZ nie ma płaszcza przeciwdeszczowego)
// 3. Sprawdź, czy osoba może komfortowo wyjść na zewnątrz

?>
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator PHP online