Is real: примеры (PHP)
is_real(mixed $value): boolФункция is_real() является псевдонимом функции is_float(). Её предназначение – проверять, является ли переданное значение числом с плавающей точкой (тип float или double).
Использование функции актуально в ситуациях, когда требуется валидация типа данных, особенно при обработке пользовательского ввода, данных из внешних источников (например, API или базы данных) или перед выполнением математических операций, критичных к типу аргументов.
Функция принимает один обязательный параметр:
- $value – переменная, тип которой необходимо проверить.
Функция возвращает true, если $value является числом с плавающей точкой (float), и false в противном случае.
Примеры проверки различных значений с помощью is_real().
<?php
$var = 3.14;
var_dump(is_real($var));
?>bool(true)
<?php
$var = 42;
var_dump(is_real($var));
?>bool(false)
<?php
$var = "123.45";
var_dump(is_real($var));
?>bool(false)
<?php
var_dump(is_real(null)); // false
var_dump(is_real(true)); // false
var_dump(is_real([1.2])); // false
var_dump(is_real(acos(8))); // true (NaN является float)
?>bool(false) bool(false) bool(false) bool(true)
В PHP существует несколько функций для проверки типов скалярных значений.
- is_float() – основная функция, полный синоним
is_real(). Предпочтительнее в использовании, так как её имя соответствует названию типа. - is_double() – ещё один полный синоним для
is_float()иis_real(). - is_numeric() – проверяет, является ли значение числом или строкой, содержащей число. Возвращает
trueдля целых чисел, чисел с плавающей точкой и их строковых представлений. - filter_var() с фильтром
FILTER_VALIDATE_FLOAT– позволяет выполнить более гибкую валидацию, включая проверку диапазонов.
Выбор функции зависит от задачи. is_float() используется для строгой проверки типа. is_numeric() подходит для проверки значений, которые могут быть переданы как строки. filter_var() применяется при необходимости комплексной валидации данных.
Частая ошибка – использование is_real() там, где нужно принять строковое представление числа.
<?php
$userInput = $_POST['price']; // Допустим, "19.99"
// Неправильно
if (is_real($userInput)) {
$price = $userInput;
}
// Правильно, если нужно принимать и строки
if (is_numeric($userInput)) {
$price = (float) $userInput;
}
?>Результат операции деления всегда является типом float, даже если числа делятся нацело.
<?php
$result = 10 / 2;
var_dump($result); // float(5)
var_dump(is_real($result)); // true
?>float(5) bool(true)
Функция is_real() является устаревшим (deprecated) псевдонимом is_float().
- Начиная с PHP 7.4.0 использование
is_real()вызывает уведомление об устаревании (E_DEPRECATED). - В PHP 8.0.0 функция
is_real()была окончательно удалена из ядра языка. Использование этого имени приводит к фатальной ошибке (Fatal error).
В современном коде на PHP 7.4 и выше необходимо использовать функцию is_float().
<?php
$data = [1, 3.14, "5.67", 8.0, null, false, NAN];
$floatArray = array_filter($data, 'is_float'); // Используем is_float (is_real удалена в PHP 8)
print_r($floatArray);
?>Array
(
[1] => 3.14
[3] => 8
[6] => NAN
)<?php
function validateCoordinate($x, $y) {
if (!is_float($x) || !is_float($y)) { // Замена is_real на is_float
return false;
}
return abs($x) <= 180.0 && abs($y) <= 90.0;
}
// В PHP 8 этот пример будет работать только с is_float
var_dump(validateCoordinate(45.1234, -78.5432)); // true
var_dump(validateCoordinate(45, -78)); // false, потому что целые числа
?>bool(true) bool(false)
В версиях PHP до 7.4 поведение было идентичным.
<?php
// Код для PHP 7.3
$val = 5.0;
var_dump(is_real($val)); // true
var_dump(is_float($val)); // true
?>bool(true) bool(true)
<?php
// INF и NAN также являются значениями типа float
$inf = log(0);
$nan = acos(8);
var_dump(is_float($inf)); // true
var_dump(is_float($nan)); // true
?>bool(true) bool(true)
Is real в Python
В Python для проверки типа используется функция isinstance() или прямое сравнение с типом.
value = 3.14
print(isinstance(value, float)) # True
print(type(value) is float) # TrueTrue True
Is real в Javascript
В JavaScript нет отдельного типа для целых чисел. Для проверки, что значение является числом (включая float), используется typeof. Для отличия целого от дробного могут применяться дополнительные проверки.
let value = 3.14;
console.log(typeof value === 'number'); // true
console.log(Number.isFinite(value)); // true
// Проверка, является ли число целым
console.log(Number.isInteger(value)); // falsetrue true false
Is real в MySQL
В MySQL тип данных проверяется на уровне столбцов таблицы. В запросах можно использовать функции для приведения типов или проверки возможности преобразования.
-- Пример проверки с помощью CAST
SELECT '12.34abc' + 0.0; -- Возвращает 12.34, выполняя неявное преобразование
-- Использование REGEXP для проверки формата числа
SELECT '3.14' REGEXP '^[0-9]+(\\.[0-9]+)?$'; -- Возвращает 1 (true)12.34 1