Проверка значения переменной в 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() все же приносит пользу.
— Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта.
— Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы).
— SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание.
SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение
Данная функция умеет распознавать дробные числа (например, 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()).
В действительности, числовые данные бывают и других форматов: положительные, отрицательные, дробные числа и др., но это уже тема другой заметки, и мы обязательно вернемся к этому моменту.
Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!
Смотрите также: