[PHP] Jak sprawdzić czy zmienna przechowuje liczbę całkowitą lub rzeczywistą?
Chcesz sprawdzić czy zmienna przechowuje liczbę całkowitą lub rzeczywistą.
Podczas przetwarzania danych użytkownik może wpisać do formularza zamiast cyfry jakiś znak, który spowoduje błąd w obliczeniach. Aby zabezpieczyć się przed przetwarzaniem danych, które nie są liczbami należy sprawdzić czy zmienna faktycznie przechowuje liczbę.
Można też rozróżnić liczby całkowite od rzeczywistych, bo nie zawsze liczby rzeczywiste są w obliczniach potrzebne. Zobacz jak to zrobić na różne sposoby.
Pierwsza metoda to zastosowanie wyrażenia regularnego. Dla liczby całkowitej:
<?
$x=20;
if (ereg("^-?[0-9][0-9]*$",$x)) echo "to jest liczba całkowita!";
else echo "to nie jest liczba całkowita";
?>
Dla liczby rzeczywistej:
<?
$x=20.3;
if (ereg("^-?[0-9][0-9]*(.[0-9])?[0-9]*$",$x)) echo "liczba rzeczywista!";
else echo "to nie jest liczba rzeczywista";
?>
Druga metoda, zdecydowanie łatwiejsza to skorzystanie z gotowych funkcji PHP. Funkcja is_numeric() sprawdza czy podany ciąg jest jakąś liczbą rzeczywistą lub całkowitą (w dowolnej notacji)
<?
$x=1.13E-100;
if (is_numeric($x)) echo "to jest liczba!";
else echo "to nie jest liczba";
?>
Z kolei funkcja is_float() sprawdza czy liczba jest wartością rzeczywistą:
<?
$x=1.1;
if (is_float($x)) echo "to jest liczba rzeczywista!";
else echo "to nie jest liczba rzeczywista";
?>
Funkcja is_int() testuje zmienną i sprawdza czy jest liczbą całkowitą:
<?
$x=-11;
if (is_int($x)) echo "to jest liczba całkowita!";
else echo "to nie jest liczba całkowita";
?>