Menu
Coddy logo textTech

Równość i tożsamość

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

PHP oferuje dwa sposoby sprawdzania, czy wartości są równe: operator równości (==) i operator identyczności (===). Zrozumienie różnicy jest kluczowe przy pisaniu niezawodnego kodu.

Operator równości (==) porównuje wartości po przekonwertowaniu ich na ten sam typ. Nazywa się to „porównaniem luźnym”:

<?php
var_dump(5 == "5");    // bool(true) - ciąg znaków jest konwertowany na liczbę
var_dump(0 == false);  // bool(true) - obie wartości stają się równe 0
var_dump(1 == true);   // bool(true) - obie wartości stają się równe 1
?>

Operator identyczności (===) porównuje zarówno wartość, jak i typ. Nie zachodzi żadna konwersja, więc oba muszą być dokładnie takie same:

<?php
var_dump(5 === "5");   // bool(false) - int kontra string
var_dump(5 === 5);     // bool(true) - ten sam typ i wartość
var_dump(0 === false); // bool(false) - int kontra bool
?>

W porównaniach „nie jest równe” użyj != (luźnego) lub !== (ścisłego):

<?php
var_dump(5 != "5");    // bool(false) - wartości są równe
var_dump(5 !== "5");   // bool(true) - typy się różnią
?>

Najlepiej używać === i !==, aby uniknąć nieoczekiwanych konwersji typów.

challenge icon

Wyzwanie

Łatwy

Odczytaj dwie wartości z wejścia: liczbę (jako ciąg znaków) i liczbę całkowitą.

Użyj operatorów równości i tożsamości, aby sprawdzić poniższe porównania, a następnie wypisz wynik każdego z nich za pomocą var_dump(), każdy w nowej linii:

  1. Sprawdź, czy wartość ciągu znaków jest równa liczbie całkowitej przy użyciu porównania luźnego (==)
  2. Sprawdź, czy wartość ciągu znaków jest równa liczbie całkowitej przy użyciu porównania ścisłego (===)
  3. Sprawdź, czy wartość ciągu znaków nie jest równa liczbie całkowitej przy użyciu porównania luźnego (!=)
  4. Sprawdź, czy wartość ciągu znaków nie jest równa liczbie całkowitej przy użyciu porównania ścisłego (!==)

Uwaga: Pozostaw pierwszą wartość jako ciąg znaków (nie rzutuj jej). Drugą wartość rzutuj na liczbę całkowitą.

Przykład:

Jeśli dane wejściowe to 42 i 42, wynikiem powinno być:

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

Wyjaśnienie:

  • "42" == 42 ma wartość true (wartości są równe po konwersji typów)
  • "42" === 42 ma wartość false (string i int — różne typy)
  • "42" != 42 ma wartość false (wartości są równe)
  • "42" !== 42 ma wartość true (typy są różne)

Spróbuj swoich sił

<?php
// Wczytaj dane wejściowe
$stringValue = trim(fgets(STDIN));
$intValue = intval(trim(fgets(STDIN)));

// TODO: Napisz swój kod poniżej
// Użyj var_dump(), aby wypisać wynik każdego porównania w nowym wierszu:
// 1. Porównanie bez sprawdzania typów (==)
// 2. Porównanie ze sprawdzaniem typów (===)
// 3. Porównanie nierówności bez sprawdzania typów (!=)
// 4. Porównanie nierówności ze sprawdzaniem typów (!==)

?>
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