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() применяется для проверки трёх различных переменных:
bool(true)
bool(false)
bool(false)Только $var1 является настоящим целым числом. Числовая строка "10" и число с плавающей точкой 3.14 возвращают false, потому что is_long() проверяет реальный тип и никогда не преобразует значение предварительно. Замена is_long() на is_int() даст точно такой же результат — это и означает понятие «псевдоним».
Фильтрация значений по типу
Поскольку функция возвращает boolean, is_long() можно напрямую использовать как callback для таких функций, как array_filter(). Это удобно для отбора только настоящих целых чисел из смешанного массива:
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() оставьте для понимания устаревших кодовых баз, которые всё ещё опираются на это имя.