W3docs

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 для любого другого типа.

Пример использования

php— editable, runs on the server

$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(), когда числовые строки тоже должны учитываться.

Практика

Практика
Как можно проверить, содержит ли переменная целое число в PHP?
Как можно проверить, содержит ли переменная целое число в PHP?
Was this page helpful?