Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]funkcja is_int
xardes
post 18.03.2011, 22:54:46
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.03.2011

Ostrzeżenie: (0%)
-----


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ą
Go to the top of the page
+Quote Post
mat-bi
post 18.03.2011, 22:58:25
Post #2





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
sadistic_son
post 18.03.2011, 23:55:45
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Lub użyj intval.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
xardes
post 20.03.2011, 15:52:51
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.03.2011

Ostrzeżenie: (0%)
-----


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ł?
Go to the top of the page
+Quote Post
markonix
post 20.03.2011, 19:06:09
Post #5





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
desperat666
post 20.03.2011, 19:18:56
Post #6





Grupa: Zarejestrowani
Postów: 31
Pomógł: 12
Dołączył: 19.03.2011

Ostrzeżenie: (10%)
X----


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.

Ten post edytował desperat666 20.03.2011, 19:22:10
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 30.04.2025 - 04:06