![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
begin |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 415 Регистрация: 16.5.2007 Репутация: нет Всего: нет |
Сделал такую проверку данных на предмет того, что они являются числом:
Но почему то через это условие спокойно проходят и данные вида: "dfgjh", т.е. к числам не имеющие никакого отношения. Может лучше проверять по-другому? |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
||||
|
||||
begin |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 415 Регистрация: 16.5.2007 Репутация: нет Всего: нет |
да, спасибо, насчет is_numeric уже дошло.
но все же, почему не работает вариант с intval? ведь для текста она выдаст пустую строку, а она ведь не равна первоначальному тексту и условие не будет соблюдаться? |
|||
|
||||
MichaelMakarov |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 11.10.2007 Репутация: нет Всего: нет |
Он работает. Просто ты неправильно его используешь. Вот она слабая типизация - и соответствующие ошибки.
intval вернёт не пустую строку, а ноль. Затем этот ноль будет сравниваться со строкой. PHP попытается привести строку к числовому виду и.... в случае "dfgjh" получит ноль. Далее будет вычисляться сравнение 0 == 0, которое даст результат true. Юз да is_numeric. Это сообщение отредактировал(а) MichaelMakarov - 11.10.2007, 16:03 |
|||
|
||||
console |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 307 Регистрация: 12.2.2007 Где: Belarus::Minsk Репутация: 2 Всего: 3 |
begin, потому что ==, пиши:
Добавлено через 52 секунды ))... опередили ![]() |
|||
|
||||
MichaelMakarov |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 11.10.2007 Репутация: нет Всего: нет |
Не прокатит. Число 0 и строка "0" не равны. Т.е.
даёт false. |
||||||
|
|||||||
begin |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 415 Регистрация: 16.5.2007 Репутация: нет Всего: нет |
Я уже исправил весь код проверок с intval на is_numeric
Теперь дошло по-настоящему. Последнее уточнение: если я проверяю в условии, является ли переменная числом, нужно ли потом, в дальнейшем коде, когда я буду использовать ее в запросах, приводить ее с помощью intval? Наверное нет, так как "не число" дальше проверки условия уже не попадет? |
|||
|
||||
vasac |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 8 Всего: 36 |
Лучше не гадать, а приводить. Хуже не станет.
Думаете, что знаете все ньюансы? А то, что is_numeric() спокойно пропустит "0x45" или "27.3e-3" учли? А лучше приводите сразу к числу без всяких проверок. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |