Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]funkcja is_int
Forum PHP.pl > Forum > Przedszkole
xardes
Witam, piszę stronkę i chcąc się zabezpieczyć przed jakimiś błędami stworzyłem sobie taką instrukcje:

  1. if(isset($_GET['wydarzenie']) == TRUE && is_numeric($_GET['wydarzenie']) == TRUE && is_int($_GET['wydarzenie']) == TRUE){}


problem polega na tym ze jak w tej instrukcji nie ma funkcji is_int() to wszystko działa porządnie a jak jest to gdy zmiennej wydarzenie przypisze np: 5 to instrukcja nie zostaje wykonana dlaczego?

A może jest inny sposób na sprawdzenie czy dana zmienna jest liczbą całkowitą
mat-bi
Problem jest z tym, że zmienne w supertablicach od początku są traktowane jako stringi, więc funkcja is_int zwróci false. Musisz zrobić rzutowanie, np. (int) $zmienna.
sadistic_son
Lub użyj intval.
xardes
Tylko że funkcja invital nie sprawdza czy liczba jest liczbą całkowitą bo dla np liczby 1.123 zwraca true.
Czy ktoś ma jakiś inny pomysł?
markonix
Możesz dodać wyrażenie regularne przepuszczające tylko cyfry ([0-9]).

Poszukaj też na php.net w temacie http://php.net/manual/en/function.is-numeric.php
Pamiętam, że jest tam funkcja is_natural.
desperat666
Typ integer to liczba całkowita, należąca do przedziału Z = {..., -2, -1, 0, 1, 2, ...}.

(PHP 4, PHP 5)
is_int — Find whether the type of a variable is integer
Note:
To test if a variable is a number or a numeric string (such as form input, which is always a string), you must use is_numeric().
is_numeric: Returns TRUE if var is a number or a numeric string, FALSE otherwise.
ctype_digit — Check for numeric character(s)


no więc:

  1. function CzyToLiczbaCalkowita($To) {
  2. if (is_numeric($To)) {
  3. if (ctype_digit($To)) {
  4. $x = (int) $To;
  5. if (is_int($x)) { return TRUE; }
  6. }
  7. }
  8. return FALSE;
  9. }
  10.  
  11. if (isset($_GET['wydarzenie'])) {
  12. if (CzyToLiczbaCalkowita($_GET['wydarzenie'])) { echo "yay"; } else { echo "mam dziurę w prawej górnej siódemce"; }
  13. }
  14.  


Ten kod sprawdzi czy to jest liczba całkowita dodatnia ze zbioru integer.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.