Przejdź do głównej treści

Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji

Zawód: Technik programista

Kategorie: Programowanie Testowanie i debugowanie

Co zostanie wyświetlone po wykonaniu poniższego kodu w PHP?

$x = 5;
$y = '5';
var_dump($x == $y);
var_dump($x === $y);
A.
bool(false) bool(false)
B.
bool(true) bool(true)
C.
bool(false) bool(true)
D.
bool(true) bool(false)
Odpowiedź bool(true) bool(false) jest prawidłowa, ponieważ w PHP porównania używane w tym kodzie różnią się pod względem operatorów. Pierwsze porównanie z użyciem operatora == jest porównaniem luźnym, co oznacza, że PHP dokonuje konwersji typów przed porównaniem. W tym przypadku zmienna $x o wartości 5 (typ integer) jest porównywana z $y, która ma wartość '5' (typ string). Po konwersji typów oba są interpretowane jako liczba 5, więc wynik to true. W drugim porównaniu operator === sprawdza zarówno wartość, jak i typ zmiennych. W tym przypadku $x jest integerem, a $y jest stringiem, więc ich typy się różnią. W związku z tym wynik to false. W praktyce, używanie operatora === jest zalecane, ponieważ pozwala uniknąć niespodzianek związanych z automatyczną konwersją typów, co jest często źródłem błędów w kodzie. Warto mieć to na uwadze przy pisaniu bardziej skomplikowanych skryptów, aby zapewnić, że porównania są jednoznaczne i wiarygodne.
Wyniki bool(false) bool(false), bool(true) bool(true) oraz bool(false) bool(true) mogą wydawać się zrozumiałe na pierwszy rzut oka, jednak każdy z tych przypadków zawiera istotne błędy w zrozumieniu mechanizmu porównania w PHP. Porównanie z użyciem operatora ==, który jest porównaniem luźnym, prowadzi do konwersji typów, co nie jest zawsze intuicyjne. Użytkownicy mogą mylnie przyjąć, że porównania opierające się na tym operatorze zawsze zwracają false, gdy zmienne mają różne typy, co jest błędne. W rzeczywistości, w przypadku wyrażenia x == y, gdzie $x to integer a $y to string, PHP przekształca zmienną stringową na typ integer przed porównaniem, co skutkuje wynikiem true. W konsekwencji, błędne odpowiedzi mogłyby wynikać z niepełnego zrozumienia działania operatora ===, który wymaga, by zarówno wartość, jak i typ były identyczne. Użytkownicy mogą mylić te dwa operatory i zakładać, że wynik będzie taki sam, niezależnie od typów zmiennych. Warto również zwrócić uwagę na to, jak ważne jest stosowanie operatora identyczności ===, który nie tylko porównuje wartości, ale także typy, co jest zgodne z dobrymi praktykami programowania w PHP. Dzięki temu unika się niejednoznaczności, co jest istotne w skomplikowanych aplikacjach. Wnioskując, kluczem do poprawnych wyników jest znajomość różnicy między porównaniami luźnymi a ścisłymi i świadome używanie odpowiednich operatorów, by unikać nieporozumień.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.