Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Algorytmy i podstawy informatyki PHP

Jaką wartość zwróci funkcja empty($a); zapisana w języku PHP, gdy zmienna $a przyjmie wartość liczbową równą 0?

A. TRUE
B. NULL
C. FALSE
D. 0

Pytanie z egzaminu CKE, czerwiec 2019 (arkusz E.14-X-19.06).

Funkcja empty($a) w PHP zwróci TRUE, gdy zmienna a ma wartość liczbową 0. To jest jedna z tych rzeczy w PHP, które warto zapamiętać praktycznie, bo często pojawia się przy formularzach, walidacji danych i sprawdzaniu pól z baz danych. empty() nie sprawdza tylko, czy zmienna istnieje, ale też czy jej wartość jest uznawana za pustą w sensie logicznym PHP. Do takich wartości należą między innymi: 0, 0.0, pusty tekst, tekst "0", FALSE, NULL oraz pusta tablica. Dlatego dla a = 0 wynik to TRUE. Moim zdaniem to bywa trochę mylące, bo człowiek widzi liczbę 0 i myśli: zmienna istnieje, więc nie jest pusta. PHP interpretuje to jednak inaczej. W dobrej praktyce, jeśli chcesz sprawdzić samo istnienie zmiennej, użyj isset(). Jeśli chcesz sprawdzić konkretnie, czy wartość jest równa 0, lepiej użyć porównania ścisłego, na przykład a === 0. To jest ważne przy obsłudze formularzy, bo użytkownik może wpisać 0 jako poprawną wartość, np. liczbę sztuk, wiek, rabat albo stan magazynowy, a empty() potraktuje to jak brak danych.
W tym pytaniu łatwo pomylić działanie funkcji empty() ze zwykłym zwracaniem wartości zmiennej albo z klasycznym porównaniem logicznym. Funkcja empty($a) nie zwraca liczby 0, bo jej zadaniem nie jest oddanie zawartości zmiennej, tylko sprawdzenie, czy dana zmienna jest pusta według reguł języka PHP. Wynikiem empty() jest zawsze wartość logiczna, czyli TRUE albo FALSE, a nie pierwotna wartość zmiennej. Dlatego odpowiedź 0 wynika zwykle z myślenia: skoro a ma 0, to funkcja zwróci 0. Tak to jednak nie działa.

Niepoprawne jest też założenie, że dla wartości 0 funkcja zwróci FALSE. W wielu językach programowania 0 jest traktowane jako fałsz w kontekście logicznym, ale tutaj trzeba uważać: empty() pyta, czy wartość jest pusta. Skoro PHP uznaje 0 za wartość pustą, odpowiedź funkcji brzmi TRUE. To jest trochę przewrotne, ale zgodne z dokumentacją PHP i bardzo istotne w realnym kodzie.

NULL również nie jest poprawnym wynikiem tej funkcji. NULL może być wartością badanej zmiennej, ale nie wartością zwracaną przez empty(). Jeśli zmienna miałaby NULL, empty() także zwróciłoby TRUE. Z mojego doświadczenia najwięcej błędów pojawia się przy walidacji formularzy, gdy pole z wartością 0 zostaje odrzucone jako puste. Dobra praktyka jest taka: empty() stosuj, gdy naprawdę chcesz wykrywać brak wartości w szerokim sensie, a przy konkretnych liczbach używaj porównań ścisłych, np. ===, żeby uniknąć nieprzyjemnych niespodzianek.

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.