- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Коллеги, доброго дня.
Надеюсь админы не будут против, но создам отдельную тему.
Предлагаю подивиться на предмет того, что в PHP отсутствует, казалось бы банальная функция, которая, по идее, могла бы быть полезна практически в каждой 10 строчке любого скрипта.
Любая таблица в БД содержит один, а то и больше столбцов в которых хранятся айдишники, т.е. положительные целые числа. Согласитесь, сталкиваемся с такими данными практически в каждом втором запросе к БД!
Покамест, попробуем сделать проверку в ручную.
И так задача:
Проверить, желательно красиво и кратко, переменную, на предмет того, что она содержит целое положительное число, или строку содержащую данное число, например '13' или '142', в строке никаких лишних символов не должно быть.
Прошу примеров.
ctype_digit($var) || is_num($var) или ещё короче ctype_digit((string)$var)
ctype_digit($var) || is_num($var)
Твоя проверка выдаст фатальную ошибку если $var = -12;
---------- Добавлено 07.06.2013 в 19:18 ----------
ctype_digit($var) || is_num($var) или ещё короче ctype_digit((string)$var)
Вторая проверка выдаст фатальную ошибку, если $var = new some_object();
Еще предложения.
Вторая проверка выдаст фатальную ошибку, если $var = new some_object();
Бугага, если ваша переменная содержит some_object() там, где она должна содержать строку (или integer), то стоит серьезно задуматься о логике его работы.
is_numeric или is_integer, остальное либо надуманно, либо криворуко написано.
Даже если не в состоянии нагуглить, то догадаться написать свою функцию....
Дом. задание: доработать функцию, чтобы работала с дробными и отрицательными числами. Хотя если у Вас айдишники дробные/отрицательные.....
Бугага, если ваша переменная содержит new some_object(); там, где она должна содержать строку (или integer), то стоит серьезна задуматься о логике его работы.
is_numeric или is_integer, остальное либо надуманно, либо тогда криворуко написано.
Благодарю за ответ, но я отлавливаю ошибки. Если вы считаете, что ошибки всегда предсказуемы, то это наивно.
Суть не в этом. Вопрос вот в чем: как можно проверить переменную на предмет того, что она содержит целое положительное число или строку содержащую такое число, например '1' или '154'. В строке не должно быть лишних символов.
Предложите, пож-та, свой вариант, если вы такой умный, бугага.
---------- Добавлено 07.06.2013 в 19:34 ----------
Даже если не в состоянии нагуглить, то догадаться написать свою функцию....
Дом. задание: доработать функцию, чтобы работала с дробными и отрицательными числами. Хотя если у Вас айдишники дробные/отрицательные.....
Благодарю и вас за ответ, но из всех предложенных здесь и в соседней ветке проверок, ваша не проходит по самому большому числу вариантов, даже если в нее банально послать 0.
Благодарю за ответ, но я отлавливаю ошибки. Если вы считаете, что ошибки всегда предсказуемы, то это наивно.
Ошибки не должны быть там где по идее не должны быть. Должна же быть хоть какая-то типизация. Если проверять каждый раз переменную перед обработкой какой-то функцией то накладные расходы будут слишком больше. А таких ситуации когда переменная может быть и массив, и объект, и хз что там еще не должно быть, либо следует избегать.
Предложите, пож-та, свой вариант, если вы такой умный, бугага.
Варианты в этой теме озвучены, причем несколько.
Ошибки не должны быть там где по идее не должны быть. Должна же быть хоть какая-то типизация. Если проверять каждый раз переменную перед обработкой какой-то функцией то накладные расходы будут слишком больше. А таких ситуации когда переменная может быть и массив, и объект, и хз что там не должно быть, либо следует избегать.
Это понятно. Придерживаюсь тех же принципов, но все же....
Я задал этот вопрос, потому что, как сказал один из участников, нагуглить ничего не получилось. Все с умным видом предлагают свои гениальные функции, но они не работаю. Благодарю за участие.
---------- Добавлено 07.06.2013 в 19:38 ----------
Варианты в этой теме озвучены, причем несколько.
Не могли бы показать, какие это варианты?
Я задал этот вопрос, потому что, как сказал один из участников, нагуглить ничего не получилось.
ну напишите тогда свою функцию, где она будет проверять если это не объект, не массив не хз что еще, а потом примените к ней одну их стандартных функций. Ничего сложного, вроде...
даже если в нее банально послать 0.
Точно? var_dump(myCheckDigit('0')); => bool(true)
---------- Добавлено 07.06.2013 в 18:47 ----------
Твоя проверка выдаст фатальную ошибку если $var = -12;
var_dump(ctype_digit('-1')); => bool(false)
var_dump(is_numeric('-1')); => bool(true)
var_dump(is_numeric(array(1))) => bool(false)
var_dump(is_numeric(new foo)) => bool(false)
Точно? var_dump(myCheckDigit('0')); => bool(true)
Точно! var_dump(myCheckDigit(0)); => bool(false)
Уважаемый, мне бы не хотелось здесь общаться на тему могу ли я нагуглить эту функцию или сам написать, нужна ли такая функция в реальных проектах или нет. Просто, если у вас есть на вооружении какая-то красивая функция, или вам не сложно ее написать за меня, поделитесь, пож-та. Очень надеюсь на понимание, спасибо.
Точно! var_dump(myCheckDigit(0)); => bool(false)
kiowas, либо вы не то пишите, либо вы не то проверяете... и 0 и '0' результат bool(true). Может у нас разные версии php?..