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

Słowa kluczowe: Funkcja empty() w PHP Funkcja isset() w PHP Funkcje w PHP

Jaką wartość zwróci w PHP funkcja isset($a), gdy zmienna $a ma wartość liczbową 0?

A.
TRUE
B.
FALSE
C.
NULL
D.
0
Funkcja isset($a) w PHP zwróci TRUE, ponieważ zmienna $a istnieje i jej wartość nie jest równa NULL. To jest najważniejsza zasada: isset nie sprawdza, czy wartość jest „prawdziwa” w sensie logicznym, tylko czy zmienna została ustawiona i czy nie ma wartości NULL. Liczbowe 0 jest normalną, konkretną wartością, więc dla PHP taka zmienna jest ustawiona. Przykład praktyczny: jeśli po formularzu dostaniesz pole z wartością 0, np. liczba sztuk produktu albo wiek wpisany jako 0 w jakimś teście, to isset nadal uzna, że dane są obecne. W dobrych praktykach PHP często używa się isset przy sprawdzaniu $_POST, $_GET albo elementów tablicy, żeby uniknąć ostrzeżeń typu undefined variable albo undefined array key. Trzeba jednak uważać: isset($a) i empty($a) działają inaczej. Dla $a = 0 funkcja isset($a) zwróci TRUE, ale empty($a) zwróci TRUE, bo 0 jest traktowane jako wartość pusta. Moim zdaniem to jeden z tych szczegółów PHP, które warto naprawdę zapamiętać, bo potem w formularzach i walidacji danych potrafi robić małe, ale upierdliwe błędy.
W tym pytaniu łatwo pomylić działanie isset z oceną wartości w warunku logicznym. W PHP liczba 0 faktycznie bywa traktowana jako FALSE, na przykład w instrukcji if ($a), ale isset($a) nie wykonuje takiej samej kontroli. Ta funkcja nie pyta: czy zmienna ma wartość logicznie prawdziwą?, tylko: czy zmienna istnieje i czy jej wartość nie jest NULL?. Skoro $a ma wartość liczbową 0, to zmienna została ustawiona, a jej wartość nie jest NULL, więc wynik to TRUE. Odpowiedź 0 jest myląca, bo funkcja isset zwraca wartość boolowską, a nie zawartość sprawdzanej zmiennej. Ona nie oddaje tego, co znajduje się w $a, tylko informuje o stanie zmiennej. NULL też nie pasuje, ponieważ NULL może być wartością zmiennej, ale nie jest typowym wynikiem isset; przy zmiennej ustawionej na NULL funkcja zwróciłaby FALSE. Z kolei FALSE byłoby poprawne wtedy, gdy zmienna w ogóle nie istnieje albo została ustawiona właśnie na NULL. Typowy błąd myślowy polega na wrzucaniu do jednego worka wartości 0, FALSE, pustego tekstu i NULL. W PHP one mogą zachowywać się podobnie w niektórych warunkach, ale przy isset różnica jest konkretna i ważna. W praktyce, zwłaszcza przy obsłudze formularzy i danych wejściowych, trzeba rozróżniać isset, empty oraz porównania typu ===, bo inaczej można przypadkiem odrzucić poprawną wartość 0, np. cenę promocyjną, liczbę sztuk albo wybraną opcję formularza.

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.