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

















