Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как проверить является ли переменная целым числом?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Jerichos
Отправлено: 13 Сентября, 2010 - 20:48:40
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2010  
Откуда: Киев


Помог: 0 раз(а)




Помогите пожалуйста проверить переменную которая передается методом GET, является ли она целым числом...
На сколько мне извесно это можно сделать с помощью функции is_int или is_integer но у меня такая проблема, если ввести

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $category='8';
  3. if(is_int($category))
  4. {
  5. echo "Ура";
  6. }
  7. else{
  8. echo "Черт";
  9. }
  10.  


результат:


Если ввести
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $category=8; //без кавычек
  3. if(is_int($category))
  4. {
  5. echo "Ура";
  6. }
  7. else{
  8. echo "Черт";
  9. }
  10.  


то результат будет нормальным


но если в переменную мы заносим глобальную переменную например
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $category=$_GET['category'];
  3. if(is_int($category))
  4. {
  5. echo "Ура";
  6. }
  7. else{
  8. echo "Черт";
  9. }
  10.  


то результат снова будет неудовлетворительным даже если мы передаем значение в виде:
CODE (htmlphp):
скопировать код в буфер обмена
  1. ...../index.php?category=8
 
 Top
ALEN
Отправлено: 13 Сентября, 2010 - 20:57:05
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Первый вариант правильно работает. А вообще пользуйся функцией is_numeric
 
 Top
garvey
Отправлено: 13 Сентября, 2010 - 20:57:55
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1. if(strcmp((int)$category,$category)) {
  2.     echo 'Bad';
  3. }
  4. else {
  5.     echo 'Good';
  6. }
 
 Top
Jerichos
Отправлено: 13 Сентября, 2010 - 21:01:31
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2010  
Откуда: Киев


Помог: 0 раз(а)




Спасибо garvey
Но проверка опять не проходит... если переменная - глобальная=(

(Отредактировано автором: 13 Сентября, 2010 - 21:07:19)

 
 Top
garvey
Отправлено: 13 Сентября, 2010 - 21:10:00
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




Как я понял, Вам необхдимо сделать проверку на целочисленность. А is_numeric проверяет на число. Даже если оно float, функция вернет true.
(Добавление)
Не знаю, что там с глобальной переменной, но register_globals = ON уже никто не пользуется. Это дурной тон. Тем более, что в php 6 этой директивы не будет.
 
 Top
Uchkuma
Отправлено: 14 Сентября, 2010 - 11:02:47
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Jerichos, спешу вас расстроить. Все значения параметров, передаваемых и GET и POST методом, всегда передаются как строки!
 
 Top
JustUserR
Отправлено: 14 Сентября, 2010 - 11:47:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Jerichos При использовании динамических языков программирования с нестрогой типизацией переменных и автоматическим преобразование типов согласно элементам текущего выражения - как правило необходимо применять специальные методы для определения реальной информации о некотором объекте без его автоматического приведения в другую форму В частности выражения if(intval($my_var)===$myvar) и if(floatval($my_var)===$myvar) обеспечивают проверку значения в переменной $myvar как целочисленный тип или число с плавающей точкой соответственно


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Jerichos
Отправлено: 14 Сентября, 2010 - 21:59:31
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2010  
Откуда: Киев


Помог: 0 раз(а)




Благодарю всех за ответы и желание помочь... буду разбираться Подмигивание
 
 Top
Nikamka
Отправлено: 15 Октября, 2012 - 16:04:51
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Вот пример кода для проверки переменных: Проверка переменной на целое число
 
 Top
armancho7777777 Супермодератор
Отправлено: 15 Октября, 2012 - 17:58:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Jerichos пишет:

PHP:
скопировать код в буфер обмена
  1.  
  2. if(preg_match('~^[\d]+$~', $category))
  3. {
  4.      echo 'Yes!';      
  5. }
  6.  

(Отредактировано автором: 15 Октября, 2012 - 18:12:34)

 
 Top
Мелкий Супермодератор
Отправлено: 15 Октября, 2012 - 19:09:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




некрофилы, блин.
Тема закрыта!


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB