Reg.ru: домены и хостинг

Крупнейший регистратор и хостинг-провайдер в России.

Более 2 миллионов доменных имен на обслуживании.

Продвижение, почта для домена, решения для бизнеса.

Более 700 тыс. клиентов по всему миру уже сделали свой выбор.

Перейти на сайт->

Бесплатный Курс "Практика HTML5 и CSS3"

Освойте бесплатно пошаговый видеокурс

по основам адаптивной верстки

на HTML5 и CSS3 с полного нуля.

Начать->

Фреймворк Bootstrap: быстрая адаптивная вёрстка

Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.

Научитесь верстать просто, быстро и качественно, используя мощный и практичный инструмент.

Верстайте на заказ и получайте деньги.

Получить в подарок->

Бесплатный курс "Сайт на WordPress"

Хотите освоить CMS WordPress?

Получите уроки по дизайну и верстке сайта на WordPress.

Научитесь работать с темами и нарезать макет.

Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!

Получить в подарок->

*Наведите курсор мыши для приостановки прокрутки.


Проверка значения переменной в PHP

При разработке скриптов и веб-приложений достаточно часто требуется проверить, содержит ли некая переменная числовое значение.

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

При этом стоит отметить, что нередко переменная может иметь тип "строка", но хранить при этом вполне себе числовое значение.

Решением в этом случае будет использование функции is_numeric(). Она возвращает true, если значение проверяемой переменной является числом или строкой, содержащей число, и false - в противном случае.

Давайте рассмотрим ее работу на следующем примере.


// Массив "кандидатов" на проверку
$candidates = array(5, '5', '05', 12.3, '16.7', 'пять', 0xDECAFBAD, '10e200');

// Проверяем каждый элемент на предмет того, является
// ли он числом или строкой, содержащей число
foreach ($candidates as $maybeNumber)
{
    $isItNumeric = is_numeric($maybeNumber);
    $actualType  = gettype($maybeNumber);

    echo "Является ли $actualType $maybeNumber числом? ";

    if (is_numeric($maybeNumber))
    {
        echo "Да";
    }

    else
    {
        echo "Нет";
    }

    echo "
"; }

Поскольку разнообразие чисел огромно, мы не может считать, что некое значение является числом просто потому, что оно состоит из символов от 0 до 9.

Что делать с точкой (разделителем дробной части) или знаком "минус"? Их нельзя просто включить в набор проверяемых символов, потому что минус может располагаться только в начале числа, а точка может быть только одна.

А ведь еще есть шестнадцатеричные числа и вариант экспоненциальной (научной) записи чисел.

Все эти варианты прекрасно предусматривает PHP-функция is_numeric().

Важно, что она не только определяет, содержит ли переменная данные, являющиеся числом, но и проверяет, возможно ли эти данные преобразовать в число.

Разумеется, формально число 5 и строка 5 с точки зрения PHP различаются. Однако обычно эти различия для нас совершенно несущественны, поэтому функция is_numeric() все же приносит пользу.

Данная функция умеет распознавать дробные числа (например, 5.1) и возвращать true, однако для чисел с разделителями групп разрядов (например, 5,100) она вернет значение false.

Чтобы убрать разделители групп разрядов из числа перед вызовом is_numeric(), воспользуйтесь функцией str_replace().

$number = "5,100";

// Этот вызов is_numeric() возвращает false
$withCommas = is_numeric($number);

// Этот вызов is_numeric() возвращает true
$withoutCommas = is_numeric(str_replace(',', '', $number));

Если же вы хотите узнать, относится ли число к конкретному числовому типу, используйте следующие функции с "говорящими" именами: is_float() (или is_double(), или is_real(); это одно и то же) и is_int() (или is_integer(), или is_long()).

В действительности, числовые данные бывают и других форматов: положительные, отрицательные, дробные числа и др., но это уже тема другой заметки, и мы обязательно вернемся к этому моменту.

Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!


Смотрите также:

PHP: Получение информации об объекте или классе, методах, свойствах и наследовании

PHP: Получение информации об объекте или классе, методах, свойствах и наследовании

CodeIgniter: жив или мертв?

CodeIgniter: жив или мертв?

Функции обратного вызова, анонимные функции и механизм замыканий

Функции обратного вызова, анонимные функции и механизм замыканий

Применение функции к каждому элементу массива

Применение функции к каждому элементу массива

Слияние массивов. Преобразование массива в строку

Слияние массивов. Преобразование массива в строку

Деструктор и копирование объектов с помощью метода __clone()

Деструктор и копирование объектов с помощью метода __clone()

Эволюция веб-разработчика или Почему фреймворк - это хорошо?

Эволюция веб-разработчика или Почему фреймворк - это хорошо?

Магические методы в PHP или методы-перехватчики (сеттеры, геттеры и др.)

Магические методы в PHP или методы-перехватчики (сеттеры, геттеры и др.)

PHP: Удаление элементов массива

PHP: Удаление элементов массива

Ключевое слово final (завершенные классы и методы в PHP)

Ключевое слово final (завершенные классы и методы в PHP)

50 классных сервисов, программ и сайтов для веб-разработчиков

50 классных сервисов, программ и сайтов для веб-разработчиков

Наверх