Номер телефона

Последнее обновление:

Как проверить, целой ли является переменная, средствами языка РНР?

В языке PHP есть, казалось бы, специальная функция, которая как раз и предназначена для того, чтобы делать проверку, это функция is_int()

Есть также функция is_integer(), являющаяся для нее синонимом.

Однако, эта функция работает от слова «не очень». Т.е. не очень качественно. Зададим различные значения переменной и проверим, насколько хорошо работает эта функция:

Как видим, все вроде бы работает. А именно - в качестве целых признаются только именно целые числа (быть может, со знаком + или -). А вот число типа 0123 тоже признается целым, но... после некоторого преобразования, в итоге получается 83. Точно также шестандатиричное число 0x456 преобразуется вначале в число 1110. которое также признается целым. Тем же числа, которые содержатся в одинарных кавычках, считаются строками, а не целыми.

Функция FILTER_VALIDATE_INT()

Это будет выглядеть в виде следующего кода на языке PHP:

function FILTER_VALIDATE_INT($variable){
    if ( filter_var($variable, FILTER_VALIDATE_INT) === false ) {
        return false;
    }else{
        return true;
    }
}

Как видим, эта функция сработала аналогичным образом.

Сравнение со строкой

Проверку будем вести при помощи следующей функции:

function compare($variable){
    if ( strval($variable) !== strval(intval($variable)) ) {
        return false;
    }else{
        return true;
    }
}

Результат в точности такой же, как и в предыдущих проверках.

При помощи функции ctype_digit()

Применим следующий программный код:

function ctype($variable){
    if ( ! ctype_digit(strval($variable)) ) {
        return false;
    }else{
        return true;
    }
}

Эта функция проверяет наличие цифровых символов в строке. Возвращает true, если каждый символ строки text является десятичной цифрой, либо false в противном случае. И вот она дает несколько иной результат. В частности, отрицательное целое число -123 определено ею как нецелое - из-за наличия знака -.

Использование регулярных выражений

Использем следующий программный код:

function rege($variable){
    if ( ! preg_match('/^\d+$/', $variable) ) {
        return false;
    }else{
        return true;
    }
}

И вот что получается:

Как видно, результат аналогичен предыдущему, для функции ctype_digit().

Вывод

Таким образом, в языке PHP есть несколько способов проверки, является ли переменная целым числом или нет. Конечно, наиболее простой способ - это стандартная функция is_int(). Однако, во-первых, ее поведение может в будущем измениться в более новых версиях РНР. Во-вторых, в ряде случаев может потребоваться несколько иной алгоритм определения целого числа, не совсем такой, как реализован в функции is_int(). Поэтому следует иметь в виду все другие способы тоже.


Комментарии:
Всего комментариев:0
Пожалуйста, не забудьте ознакомиться с правилами оставления комментариев.



Подписаться на комментарии на этой странице

Мы можем выполнить

Другие услуги
Интересная и полезная
информация
НАПИШИТЕ НАМ
Яндекс.Метрика
Номер телефона
© Copyright Все права защищены 2013-2024 Научный консалтинг