Co zwróci w języku PHP wywołanie is_numeric("12a")?
A.
TRUEB.
0C.
NULLD.
FALSEPoprawna odpowiedź to FALSE. Funkcja is_numeric() sprawdza, czy przekazana wartość jest liczbą albo łańcuchem znaków zapisanym w całości w poprawnym formacie liczbowym PHP. Napis 12a zawiera wprawdzie cyfry 1 i 2, ale na końcu ma literę a, dlatego cały ciąg nie może zostać uznany za liczbę. Funkcja nie próbuje wycinać części liczbowej ani nie zwraca wartości po konwersji - zwraca wynik logiczny typu bool: TRUE albo FALSE. Do zapamiętania: is_numeric($x) daje TRUE dla wartości takich jak 12, 12.5 czy 1e3, ale FALSE dla tekstu z dodatkowymi znakami nieliczbowymi. W praktyce używa się jej często przy walidacji danych z formularzy, zanim wykona się obliczenia lub zapisze wartość jako liczbę.
Wybranie TRUE zwykle wynika z założenia, że wystarczy obecność cyfr na początku napisu. W PHP funkcja is_numeric() ocenia jednak cały łańcuch, a nie tylko jego fragment, więc tekst 12a nie przechodzi testu liczbowego. Wartość 0 nie jest właściwym wynikiem tej funkcji w tym kontekście. is_numeric() zwraca typ bool, czyli TRUE albo FALSE; 0 może pojawić się najwyżej przy późniejszym rzutowaniu FALSE na liczbę całkowitą, ale nie jako bezpośrednia odpowiedź funkcji. NULL oznacza brak wartości i byłby sensowny przy funkcjach, które niczego nie zwracają albo sygnalizują brak danych, lecz tutaj wynik zawsze jest logiczny. Poprawna odpowiedź to FALSE, ponieważ napis 12a zawiera znak nienależący do zapisu liczby. Typowa pułapka polega na myleniu sprawdzania liczby z konwersją tekstu na liczbę, gdzie część początkowa mogłaby zostać potraktowana inaczej.