is_int()
для типа безопасного сравнения, поэтому строка , которая получена из браузера, всегда оценивается в false
.
Если вам действительно нужно проверить, если переменная является integer
вы можете использовать эту удобную функцию:
function str_is_int($number) {
// compare explicit conversion to original and check for maximum INT size
return ((int)$number == $number && $number <= PHP_INT_MAX);
// will return false for "123,4" or "123.20"
// will return true for "123", "-123", "-123,0" or "123.0"
}
Примечание: вы должны заменить PHP_INT_MAX с максимальным размером целочисленного вашей целевой системы - например, вашей базы данных.
in the docs of is_int()
вы можете прочитать:
is_int - Найти тип переменной, является ли целое число
bool is_int (mixed $var)
Примечание:
Чтобы проверить, является ли переменная представляет собой числовую или числовую строку (например, ввод формы, которая всегда является строка), вы должны использовать is_numeric()
.
Пример:
<?php
if (is_int(23)) {
echo "is integer\n";
} else {
echo "is not an integer\n";
}
var_dump(is_int(23));
var_dump(is_int("23"));
var_dump(is_int(23.5));
var_dump(is_int(true));
?>
Приведенный выше пример выведет:
is integer
bool(true)
bool(false)
bool(false)
bool(false)
Это потому, что '$ _POST' всегда содержит строки, а не целые значения. –
Я обычно использую ['ctype_digit()'] (http://us3.php.net/manual/en/function.ctype-digit.php), но люди делают это много разных способов. –
Возможный дубликат [php validate integer] (http://stackoverflow.com/questions/4100022/php-validate-integer) –