W PHP funkcje z rodziny is_* służą do sprawdzania rzeczywistego typu przekazanej wartości. W tym zadaniu kluczowa jest funkcja is_float() (alias: is_double()), która zwraca wartość logiczną true wyłącznie wtedy, gdy argument jest typu float (liczba zmiennoprzecinkowa).
Wywołanie is_float(3.34) przekazuje do funkcji literał liczbowy z kropką dziesiętną, więc w kodzie jest to typ float. Z tego powodu zwracane jest true.
Pozostałe wywołania są niepoprawne, bo przekazują inne typy:
- is_float(NULL) – NULL oznacza brak wartości; nie jest liczbą, więc test typu float kończy się wynikiem false.
- is_float('3,34') – to string (napis) w cudzysłowie. Dodatkowo użyto przecinka jako separatora dziesiętnego, co w kodzie nie tworzy literału float. Funkcja sprawdza typ, a nie "czy da się to zinterpretować jako liczbę", więc wynik to false.
- is_float(334) – wartość 334 bez części ułamkowej jest w PHP literałem typu int. Mimo że dałoby się zapisać ją jako 334.0 (float), tutaj argumentem jest int, więc wynik to false.
Wskazówka egzaminacyjna: w pytaniach o is_float(), is_int() i podobne zawsze patrz na typ argumentu (czy jest w cudzysłowie, czy ma kropkę, czy jest NULL), a nie na to, czy "wygląda liczbowo".