Да, ваш вариант как бы правильней будет.---------- Добавлено 07.06.2013 в 20:29 ----------
$y = filter_var($x, FILTER_VALIDATE_INT, array('options'=>array('min_range'=>1))); if($y === false) { echo "FAIL"; }
$y = test_nat($x); if($y === false) { echo "FAIL"; } function test_nat($x) { return filter_var($x, FILTER_VALIDATE_INT, array('options'=>array('min_range'=>1))); }
Разницы между двумя способами не вижу, но все равно, будет проходить проверку, если:
$var = true;
Нужно еще лепить конструкцию.
Вы тоже гений!!! Хорошо!
А теперь вопрос: почему не сделаю такой тип или проверку. Положа руку на сердце, каждый скажет, что в веб программировании, переменных, которые по идее должны содержать именно такой тип данных подавляющее большинство!!! Согласитесь!
Вы гений, просто божественный программист!!! 🤪 🍻
Красиво, просто. Браво, я аплодирую вам стоя! Сейчас пойду покурю в неположенное место и буду там аплодировать!!!!
if( ! preg_match('/[^0-9]/', $num) OR $num < 1 ) return false;
Нет, тот вариант был правильней, этот вообще далеко. :)---------- Добавлено 07.06.2013 в 20:19 ----------
function is_positive($num) {if (isset($num) && (is_int($num) or ((string)(int)$num == $num)) && $num > 0)return true;elsereturn false;}
Тоже самое :(
Не проходит:
1. $var = '054';
2. $var = 'true';
И еще пару вариантов. Нужно лепить дальше....
Спасибо за интерес 😂
Проходит проверку если:
2. $var = true;
А так же если переменная является объектом или массивом. Нужно еще лепить... :)---------- Добавлено 07.06.2013 в 20:12 ----------
function is_positive($num) { if (isset($num) && (is_int($num) or (is_numeric($num) and floor($num) == $num)) && $num > 0) return true; else return false; }
Срабатывает если:
2. $var = '25.0'
Нужно еще лепить.
Согласен, вы разбили задачу на две составляющих, пускай будет так. Может кто-то еще прилепит к этому конъюнкцию, т.е. соединит две проверки. Эт все не так важно.
Важно решить задачу красиво. Есть переменная. Нужно понять, является ли она целым положительным числом или строкой содержащей это число, например '15' или '15486'. Лишних знаков не должно быть.
😂
Проходит, если:
А так же если переменная является массивом или объектом. Нужно еще лепить....
Проходит проверку, если:
1. $var = 'asdfa';
И много где еще.... :(
Проверка не только переменных из $_POST и $_GET. Вот в чем соль :(---------- Добавлено 07.06.2013 в 20:00 ----------
Очень близко, но нужно лепить дополнительные проверки, так как проверку проходят занчения:
2. $var = '0';
3. $var = 0;
В preg_match стоит маска /[^0-9]+/
Она срабатывает, если найдено что-то не похожее на цифру и тогда возвращается false.
Если я передам в нее '0', он подумает, что это цифра и вернет true, но это не положительное целое число.