Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]is_integer i is_numeric
Forum PHP.pl > Forum > Przedszkole
nowy_pehapowiec
Przekazuje w adresie wartość zmiennej id=123. Po czym sprawdzam czy to jest integer
if( isset( $_GET['id'] ) && is_integer( $_GET['id'] ) )
i okazuje się, że nie. Ale jak dam is_numeric to przechodzi. Czemu?

pozdro
nospor
no przeciez masz to napisane w manualu!
http://pl2.php.net/manual/pl/function.is-int.php
Cytat
Find whether the type of a variable is integer


http://pl2.php.net/manual/pl/function.is-numeric.php
Cytat
Finds whether a variable is a number or a numeric string


ps: wszystko co przychodzi z GETa czy POSTA jest tekstem
thek
Zmienne GET zawsze są przesyłane jako wartość typu string. A więc jeśli wykonasz na tym sprawdzenie to system widzi nie 876 ale "876". Is_numeric zobaczy to jako wartość numeryczną zapisaną jako string, is_integer uzna za string i wywali false winksmiley.jpg
nowy_pehapowiec
wszystko co przychodzi z GETa czy POSTA jest tekstem

no to strzeliłem gafę sad.gif
cojack
Wywołaj rzutowanie niejawne bo jawnego w php nie ma z stringu na int za pomocą (int), jeżeli jest numerci to nie stracisz na rzutowaniu, jeżeli nie jest dostaniesz 0, false. Czyli rzutowanie stratne.
nospor
Cytat
jeżeli nie jest dostaniesz 0, false.
No nie do konca...
  1. $str = '123nienumeric';
  2. $int = (int)$str;
  3. echo "$str da nam $int";
  4. echo '<br />';
  5. $str = 'nienumeric123';
  6. $int = (int)$str;
  7. echo "$str da nam $int";


Cytat
123nienumeric da nam 123
nienumeric123 da nam 0
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.