W3docs

is_long()

Функция is_long() в PHP проверяет, является ли переменная целым числом. Возвращает true для целых и false в остальных случаях.

Введение

is_long() — встроенная функция PHP, которая проверяет, содержит ли переменная значение целочисленного типа. Она возвращает true, если переменная является целым числом, и false в противном случае.

Главное, что нужно понять: is_long() является точным псевдонимом функции is_int() — оба имени вызывают одну и ту же функцию и ведут себя идентично. На этой странице объясняется, откуда взялось имя is_long(), как она работает и почему в новом коде следует предпочитать is_int().

Почему имя "is_long"?

В исходном коде PHP на языке C целочисленный тип представлен типом C long. По этой исторической причине PHP предоставляет три взаимозаменяемых имени для одной и той же проверки целого числа:

  • is_int() — каноническое, рекомендуемое имя.
  • is_integer() — псевдоним, сохранённый для читаемости.
  • is_long() — псевдоним, отражающий внутреннее имя типа C.

Все три доступны в текущих версиях PHP (включая PHP 8.x) и возвращают одинаковый результат для одних и тех же входных данных. Руководство по PHP перечисляет is_long() и is_integer() как псевдонимы is_int() и рекомендует is_int() для ясности.

Базовый синтаксис

is_long($variable); // identical to is_int($variable)

Параметр $variable — значение для проверки. Функция возвращает true только для реального целочисленного значения, без приведения типов — числовые строки и числа с плавающей точкой возвращают false.

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

В примере is_long() применяется для проверки трёх различных переменных:

php— editable, runs on the server
bool(true)
bool(false)
bool(false)

Только $var1 является настоящим целым числом. Числовая строка "10" и число с плавающей точкой 3.14 возвращают false, потому что is_long() проверяет реальный тип и никогда не преобразует значение предварительно. Замена is_long() на is_int() даст точно такой же результат — это и означает понятие «псевдоним».

Фильтрация значений по типу

Поскольку функция возвращает boolean, is_long() можно напрямую использовать как callback для таких функций, как array_filter(). Это удобно для отбора только настоящих целых чисел из смешанного массива:

php— editable, runs on the server
Array
(
    [0] => 10
    [3] => 40
)

array_filter() оставляет только настоящие целые числа, отбрасывая числовую строку "20" и число с плавающей точкой 30.5. Обратите внимание, что исходные ключи массива (0 и 3) сохраняются без перенумерации.

Важные замечания

  • Псевдоним is_int(): is_long() не имеет собственного поведения. В PHP нет отдельного типа «long», отличного от int; имя лишь отражает внутреннее представление в C.
  • Доступна, но не рекомендована: is_long() работает в текущем PHP, однако руководство рекомендует is_int() для читаемости. Многие руководства по стилю и инструменты статического анализа отмечают этот псевдоним.
  • Без приведения типов: как и is_int(), она возвращает false для числовых строк ("123") и чисел с плавающей точкой, представляющих целые значения (5.0). Чтобы принять их, используйте is_numeric() или filter_var($var, FILTER_VALIDATE_INT).

Рекомендации

Предпочитайте is_int() в новом коде

is_int(), is_integer() и is_long() взаимозаменяемы, поэтому выберите одно имя и придерживайтесь его. Принятое в сообществе соглашение — is_int(): оно короче всего, наиболее понятно и используется в документации.

Избегайте избыточных сравнений

Поскольку функция уже возвращает boolean, оборачивать её результат в строгое сравнение (=== true) излишне. Просто пишите if (is_int($var)).

Связанные функции проверки типов

  • is_int() — каноническая, рекомендуемая проверка целого числа.
  • is_integer() — ещё один читаемый псевдоним is_int().
  • is_numeric() — возвращает true для целых чисел, чисел с плавающей точкой и числовых строк.
  • is_float() — проверяет значения с плавающей точкой.
  • is_string() — проверяет строковые значения.

Заключение

is_long() — просто альтернативное имя для is_int(). Она выполняет строгую проверку целого числа без приведения типов и ведёт себя идентично своему более известному аналогу. Поскольку псевдоним не добавляет никакой функциональности и может вводить читателей в замешательство, используйте is_int() в новом коде, а is_long() оставьте для понимания устаревших кодовых баз, которые всё ещё опираются на это имя.

Практика

Практика
Какое из следующих утверждений о функции PHP 'is_long' является верным?
Какое из следующих утверждений о функции PHP 'is_long' является верным?
Was this page helpful?