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.
Wyzwanie
ŁatwyOdczytaj 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:
- Sprawdź, czy wartość ciągu znaków jest równa liczbie całkowitej przy użyciu porównania luźnego (
==) - Sprawdź, czy wartość ciągu znaków jest równa liczbie całkowitej przy użyciu porównania ścisłego (
===) - Sprawdź, czy wartość ciągu znaków nie jest równa liczbie całkowitej przy użyciu porównania luźnego (
!=) - 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" == 42ma wartość true (wartości są równe po konwersji typów)"42" === 42ma wartość false (string i int — różne typy)"42" != 42ma wartość false (wartości są równe)"42" !== 42ma 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 (!==)
?>Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory porównania i logiczne
Operatory porównaniaRówność i tożsamośćOperatory logiczne — część 1Operatory logiczne — część 2Powtórka — prosta logika2Zmienne i typy danych
LiczbyCiągi znaków i cudzysłowyWartości logiczneKonwencje nazewnictwaPodsumowanie — inicjalizacja zmiennychPuste zmienneŁączenie ciągów znakówPobieranie danych od użytkownikaKonwersja na inne typy5Instrukcje warunkowe
Instrukcja ifIf - elseOperator trójargumentowyOperator null coalescingInstrukcja switchPodsumowanie — podejmowanie decyzji3Podstawowe operatory
Operatory arytmetyczneOperator moduloOperator potęgowaniaPrzypisanie złożoneInkrementacja/dekrementacjaPriorytet operatorówPowtórka — proste obliczeniaOperatory łańcuchów znakówPoćwicz samodzielnie: Kompilator PHP online