Is real: примеры (PHP)

Использование и особенности устаревшей функции is_real
Раздел: Работа с переменными
is_real(mixed $value): bool
Описание функции is_real

Функция is_real() является псевдонимом функции is_float(). Её предназначение – проверять, является ли переданное значение числом с плавающей точкой (тип float или double).

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

Аргументы функции

Функция принимает один обязательный параметр:

  • $value – переменная, тип которой необходимо проверить.

Функция возвращает true, если $value является числом с плавающей точкой (float), и false в противном случае.

Простые примеры использования

Примеры проверки различных значений с помощью is_real().

Пример 1: Проверка float
<?php
$var = 3.14;
var_dump(is_real($var));
?>
bool(true)
Пример 2: Проверка integer
<?php
$var = 42;
var_dump(is_real($var));
?>
bool(false)
Пример 3: Проверка строки, содержащей число
<?php
$var = "123.45";
var_dump(is_real($var));
?>
bool(false)
Пример 4: Проверка других типов
<?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

В 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() применяется при необходимости комплексной валидации данных.

Типичные ошибки
1. Путаница с is_numeric()

Частая ошибка – использование is_real() там, где нужно принять строковое представление числа.

<?php
$userInput = $_POST['price']; // Допустим, "19.99"
// Неправильно
if (is_real($userInput)) {
    $price = $userInput;
}
// Правильно, если нужно принимать и строки
if (is_numeric($userInput)) {
    $price = (float) $userInput;
}
?>
2. Проверка результата математической операции

Результат операции деления всегда является типом float, даже если числа делятся нацело.

<?php
$result = 10 / 2;
var_dump($result);        // float(5)
var_dump(is_real($result)); // true
?>
float(5)
bool(true)
Изменения в версиях PHP

Функция 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().

Расширенные примеры
Пример: Фильтрация массива по типу float
Пример php
<?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
<?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)
Пример: Сравнение поведения is_real (в PHP 7.3) и is_float

В версиях PHP до 7.4 поведение было идентичным.

Пример php
<?php
// Код для PHP 7.3
$val = 5.0;
var_dump(is_real($val)); // true
var_dump(is_float($val)); // true
?>
bool(true)
bool(true)
Пример: Обработка специальных float-значений
Пример php
<?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)      # True
True
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));   // false
true
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

PHP is_real function comments

En
Is real Alias of is_float