is_integer()
Функция is_integer() — псевдоним is_int() в PHP. Проверяет, является ли переменная целым числом, и возвращает boolean.
Введение
is_integer() является псевдонимом функции is_int() в PHP. Она проверяет, имеет ли переменная тип integer, и возвращает boolean. Целое число в PHP — это число без дробной части, например -5, 0 или 42.
На этой странице рассматривается, что именно проверяет is_integer() (и что она намеренно не проверяет), подводные камни с числовыми строками, а также какое имя следует использовать в новом коде.
Используйте
is_int()вместо этого.is_integer()иis_int()— это одна и та же функция, поэтому ни одна из них не удалена и не устарела. Однакоis_int()является каноническим именем, используемым в руководстве PHP и современных кодовых базах. Предпочтите его для единообразия.
Синтаксис
is_integer(mixed $value): boolФункция принимает один аргумент, $value — переменную для проверки, и возвращает true только тогда, когда $value имеет тип int, и false для любого другого типа.
Пример использования
$var1 содержит целое число 42, поэтому вызов возвращает true, которое echo выводит как 1. $var2 — строка, поэтому вызов возвращает false, которое echo выводит как ничего (пустую строку). Чтобы чётко видеть boolean-значения, используйте var_dump() вместо echo.
Функция проверяет тип, а не значение
Это наиболее распространённый источник путаницы: is_integer() смотрит на тип переменной, поэтому строка вроде "42" или число с плавающей точкой 42.0 не являются целыми числами, даже если они «выглядят» как целые.
<?php
var_dump(is_integer(42)); // bool(true)
var_dump(is_integer("42")); // bool(false) — numeric string, not int
var_dump(is_integer(42.0)); // bool(false) — float, not int
var_dump(is_integer(true)); // bool(false) — bool, not int
var_dump(is_integer(null)); // bool(false)
var_dump(is_integer(PHP_INT_MAX)); // bool(true)
?>Если вам нужно принимать числовые строки (например, значения из $_GET, $_POST или CSV-файла), используйте is_numeric() или приведение/валидацию с помощью intval().
Когда это использовать?
- Проверка аргумента функции перед выполнением операций только с целыми числами, например при использовании значения в качестве индекса массива или границы цикла.
- Различение типов после функции, которая может возвращать смешанные типы (распространённый паттерн с
strpos(), возвращающей либо смещениеint, либоfalse):
<?php
$pos = strpos("hello world", "world");
if (is_integer($pos)) {
echo "Found at index $pos\n"; // Found at index 6
} else {
echo "Not found\n";
}
?>Связанные функции проверки типов
| Функция | Возвращает true для |
|---|---|
is_int() | Значения типа int (каноническое имя; идентична is_integer()) |
is_float() | Значения типа float (например, 3.14, 42.0) |
is_string() | Значения типа string, включая "42" |
is_numeric() | Значения типа int, float или числовой строки |
gettype() | (возвращает имя типа, а не boolean) |
Смотрите главу типы данных PHP для полного понимания того, как PHP классифицирует значения.
Заключение
is_integer() — псевдоним is_int(), возвращающий true только тогда, когда переменная имеет тип int. Помните, что функция проверяет тип, а не значение, поэтому для числовых строк и чисел с плавающей точкой она возвращает false. В новом коде предпочтительнее использовать канонический is_int(); обращайтесь к is_numeric(), когда числовые строки тоже должны учитываться.