Lekcja 5: Operatory arytmetyczne, porównania, logiczne i nowy ??

Operatory to specjalne symbole, które wykonują operacje na wartościach i zmiennych. Dzięki nim nasz kod nabiera dynamiki. W tej lekcji poznamy ich najważniejsze rodzaje. Stwórz nowy plik operatory.php.

1. Operatory Arytmetyczne (Matematyka)

Służą do wykonywania podstawowych działań matematycznych.

  • + (dodawanie)
  • - (odejmowanie)
  • * (mnożenie)
  • / (dzielenie)
  • % (modulo – reszta z dzielenia)

Przykład:

<?php

$x = 10;
$y = 4;

echo "Dodawanie: " . ($x + $y); // Wynik: 14
echo "<br>"; // Wstawia nową linię w HTML
echo "Mnożenie: " . ($x * $y); // Wynik: 40
echo "<br>";
echo "Reszta z dzielenia: " . ($x % $y); // Wynik: 2 (bo 10 / 4 = 2, reszta 2)
echo "<br>";

?>

2. Operatory Przypisania (Skróty)

Znasz już podstawowy operator przypisania (=). Istnieją też jego wersje skrócone, które pozwalają pisać kod zwięźlej.

  • += (dodaj i przypisz), np. $x += 2; to to samo co $x = $x + 2;
  • -= (odejmij i przypisz)
  • *= (pomnóż i przypisz)
  • /= (podziel i przypisz)
  • .= (połącz tekst i przypisz), np. $tekst .= "!"; to to samo co $tekst = $tekst . "!";

Przykład:

<?php

$licznik = 5;
$licznik += 3; // Teraz $licznik ma wartość 8
echo $licznik; // Wyświetli 8
echo "<br>";

$powitanie = "Dzień dobry";
$powitanie .= ", Anno!"; // Teraz $powitanie ma wartość "Dzień dobry, Anno!"
echo $powitanie;

?>

3. Operatory Porównania (Prawda czy Fałsz?)

Niezwykle ważne! Służą do porównywania dwóch wartości. Wynikiem ich działania jest zawsze wartość logiczna: true (prawda) lub false (fałsz).

  • == (równe) – sprawdza, czy wartości są równe.
  • === (identyczne) – sprawdza, czy wartości i typy danych są równe. Używaj tego domyślnie!
  • != (różne)
  • !== (nieidentyczne)
  • > (większe niż)
  • < (mniejsze niż)
  • >= (większe lub równe)
  • <= (mniejsze lub równe)

Przykład:

<?php

$a = 5;
$b = "5"; // Zwróć uwagę, że to jest string!
$c = 10;

// Funkcja var_dump() jest świetna do debugowania - pokazuje typ i wartość
var_dump($a == $b);   // Wynik: bool(true) - bo "5" jest równe 5
echo "<br>";
var_dump($a === $b);  // Wynik: bool(false) - bo typ int nie jest identyczny jak string
echo "<br>";
var_dump($a != $b);   // Wynik: bool(false)
echo "<br>";
var_dump($a !== $b);  // Wynik: bool(true)
echo "<br>";
var_dump($a < $c);    // Wynik: bool(true)

?>

Zapamiętaj: Różnica między == a === jest kluczowa. Zawsze, gdy to możliwe, używaj potrójnego znaku równości ===, aby uniknąć nieoczekiwanych błędów.

4. Operatory Logiczne (Łączenie Warunków)

Pozwalają łączyć ze sobą wiele warunków porównania.

  • && (oraz) – (warunek1 && warunek2) jest prawdziwe tylko wtedy, gdy oba warunki są prawdziwe.
  • || (lub) – (warunek1 || warunek2) jest prawdziwe, gdy przynajmniej jeden z warunków jest prawdziwy.
  • ! (nie) – !warunek odwraca wartość logiczną (z true robi false i odwrotnie).

Przykład:

<?php

$wiek = 25;
$posiadaPrawoJazdy = true;

// Czy wiek jest większy od 18 ORAZ czy posiada prawo jazdy?
var_dump($wiek > 18 && $posiadaPrawoJazdy); // Wynik: bool(true)

// Czy wiek jest mniejszy od 18 LUB czy NIE posiada prawa jazdy?
var_dump($wiek < 18 || !$posiadaPrawoJazdy); // Wynik: bool(false)

?>

5. Nowoczesny Operator: Null Coalescing (??)

Bardzo przydatny skrót w nowoczesnym PHP. Pozwala sprawdzić, czy zmienna istnieje i nie jest null. Jeśli nie jest, używa jej wartości. Jeśli jest, używa wartości domyślnej.

Przykład: Zamiast pisać długi kod:

if (isset($nazwaUzytkownika)) {
    $powitanie = $nazwaUzytkownika;
} else {
    $powitanie = "Gość";
}

Możemy napisać to samo w jednej linijce:

<?php

// Załóżmy, że $nazwaUzytkownika nie istnieje
$powitanie = $nazwaUzytkownika ?? "Gość";
echo $powitanie; // Wynik: Gość

echo "<br>";

$login = "admin";
$nazwaDoWyswietlenia = $login ?? "Gość";
echo $nazwaDoWyswietlenia; // Wynik: admin

?>

To czysty, czytelny i nowoczesny sposób na przypisywanie wartości domyślnych.

Podsumowanie

Gratulacje! Opanowałeś właśnie operatory – narzędzia, które pozwalają Twojemu kodowi wykonywać obliczenia, porównywać dane i podejmować logiczne decyzje. Są one absolutnie niezbędne do budowania jakiejkolwiek logiki w programie.

Przewijanie do góry