Is integer: примеры (PHP)
is_integer(mixed $value): boolОсновная информация
Функция is_integer() является псевдонимом функции is_int() в языке PHP. Она используется для проверки типа переменной. Функция определяет, является ли переданное значение целым числом (integer).
Функция находит применение в ситуациях, когда требуется валидация входящих данных, например, при обработке данных форм, аргументов функций или значений из базы данных, где ожидается целочисленный тип. Она помогает обеспечить целостность типов данных перед выполнением операций.
Функция принимает один обязательный параметр:
- $value - проверяемое значение. Может быть любого типа.
Функция возвращает true, если $value является целым числом (integer), и false в противном случае.
Краткие примеры использования
$var = 42;
var_dump(is_integer($var));bool(true)
$var = 42.0;
var_dump(is_integer($var));
$var = "42";
var_dump(is_integer($var));
$var = true;
var_dump(is_integer($var));
$var = null;
var_dump(is_integer($var));bool(false) bool(false) bool(false) bool(false)
$var = 1_000_000;
var_dump(is_integer($var));bool(true)
Похожие функции в PHP
- is_int() - полный аналог функции
is_integer(). Между ними нет никакой разницы.is_integerявляется просто другим именем дляis_int. - ctype_digit() - проверяет, являются ли все символы в строке цифрами. Ключевое отличие: она работает со строками.
ctype_digit("42")вернетtrue, тогда какis_integer("42")вернетfalse. - filter_var() с фильтром
FILTER_VALIDATE_INT- осуществляет более гибкую проверку целых чисел, может проверять диапазоны значений и возвращает само значение при успехе илиfalseпри неудаче. - gettype() - возвращает тип переменной в виде строки. Сравнение:
gettype($var) === 'integer'дает аналогичный результат, но менее производительно и наглядно.
Для строгой проверки типа переменной на integer всегда используют is_int() или is_integer(). Если нужно проверить строковое представление целого числа, подходит ctype_digit() (для неотрицательных чисел) или filter_var(). filter_var() предпочтительнее для сложной валидации с указанием диапазона.
Распространенные ошибки
Наиболее частая ошибка - ожидание, что функция вернет true для строк, содержащих цифры.
$id = $_GET['id']; // Допустим, значение "123"
if (is_integer($id)) {
echo "Это целое число.";
} else {
echo "Это не целое число.";
}Это не целое число.
Числа типа float, даже если они выглядят как целые (например, 5.0), не являются типом integer.
$price = 10.00;
var_dump(is_integer($price));bool(false)
// Переменная $undefined не была объявлена
if (is_integer($undefined)) {
echo "Прошло проверку.";
}
// Генерируется предупреждение: Undefined variableИзменения в версиях PHP
Функция is_integer(), как и её аналог is_int(), является стабильной и её поведение не менялось на протяжении многих основных версий PHP. В PHP 8.0 было усилено соблюдение строгости типов в целом, но сама логика работы данной функции осталась прежней. Ранее, в PHP 7.2, улучшена согласованность поведения функций для проверки типов.
Важное уточнение: начиная с PHP 8.0, многие функции стали более строгими в отношении типов аргументов, однако is_integer() по-прежнему принимает значение любого типа.
Расширенные примеры
function validateUserId($user_id) {
if (!is_integer($user_id)) {
throw new InvalidArgumentException("ID пользователя должно быть целым числом.");
}
if ($user_id <= 0) {
throw new InvalidArgumentException("ID пользователя должно быть положительным числом.");
}
return true;
}
try {
validateUserId(100);
echo "Валидация прошла успешно.";
} catch (InvalidArgumentException $e) {
echo "Ошибка: " . $e->getMessage();
}Валидация прошла успешно.
$values = [42, "42", 42.5, 42.0, true, null, []];
foreach ($values as $value) {
$isInt = is_integer($value);
$afterCast = (int) $value;
echo "Значение: ";
var_dump($value);
echo "is_integer: " . ($isInt ? 'true' : 'false') . "\n";
echo "После (int): ";
var_dump($afterCast);
echo "---\n";
}Значение: int(42) is_integer: true После (int): int(42) --- Значение: string(2) "42" is_integer: false После (int): int(42) --- ... и так далее
declare(strict_types=1);
function add(int $a, int $b): int {
return $a + $b;
}
// Функция is_integer может использоваться для предварительной проверки перед вызовом
$a = 5;
$b = "10";
if (is_integer($a) && is_integer($b)) {
echo add($a, $b);
} else {
echo "Оба аргумента должны быть целыми числами.";
}Оба аргумента должны быть целыми числами.
$data = ['id' => '123', 'count' => 5, 'price' => 9.99];
$integerKeys = [];
foreach ($data as $key => $value) {
if (is_integer($value)) {
$integerKeys[] = $key;
}
}
print_r($integerKeys);Array
(
[0] => count
)Аналоги в других языках
Is integer в Python
В Python для проверки типа используется функция isinstance() или оператор type().
value = 42
print(isinstance(value, int))
print(type(value) == int)True True
Is integer в Javascript
В JavaScript нет отдельной функции. Используют комбинацию typeof и проверок. Метод Number.isInteger() появился в ES6.
let value = 42;
console.log(typeof value === 'number' && isFinite(value) && Math.floor(value) === value);
console.log(Number.isInteger(value));true true
Is integer в MySQL
В контексте запросов SQL часто используется проверка через регулярные выражения или функции типа CAST().
-- Проверка, является ли столбец целым числом (пример логики)
SELECT column_name FROM table_name WHERE column_name REGEXP '^[0-9]+$' AND column_name = CAST(column_name AS UNSIGNED);