abs()
Функция abs() в PHP возвращает абсолютное значение числа — его величину без знака.
Функция abs() возвращает абсолютное значение числа — его величину без знака. Иными словами, она показывает, насколько число удалено от нуля, поэтому abs(-5) и abs(5) оба дают 5. На этой странице рассматриваются синтаксис, возвращаемые типы, важные граничные случаи и наиболее распространённые практические применения.
Синтаксис
abs(int|float $num): int|float$num— число, абсолютное значение которого нужно получить (целое или дробное).- Возвращаемое значение — абсолютное значение
$num. Тип возвращаемого значения совпадает с типом входного: передаёте целое — получаете целое; передаёте дробное — получаете дробное.
Базовый пример
Это выведет 5. Мы начинаем с отрицательного значения, вызываем abs(), чтобы убрать знак, и выводим результат. Положительное входное значение вернётся без изменений.
Целые и дробные числа
abs() сохраняет числовой тип, что важно при сравнении результатов или форматировании вывода:
<?php
echo abs(-7); // 7 (int)
echo "\n";
echo abs(-7.5); // 7.5 (float)
echo "\n";
var_dump(abs(-7)); // int(7)
var_dump(abs(-7.5)); // float(7.5)
?>Числовые строки также допустимы — abs("-3.2") возвращает дробное число 3.2, — однако передача нечисловой строки вызывает TypeError в PHP 8+, поэтому проверяйте входные данные с помощью is_numeric(), если они поступают из внешних источников.
Практический пример: расстояние между двумя значениями
Наиболее распространённая причина использовать abs() — вычислить разность между двумя числами, не заботясь о том, какое из них больше:
<?php
$expected = 100;
$actual = 87;
$difference = abs($expected - $actual);
echo "You are off by {$difference}.";
?>Это выведет You are off by 13. независимо от того, равно ли $actual 87 или 113 — порядок вычитания больше не имеет значения. Тот же подход удобен для проверки допустимых отклонений (if (abs($a - $b) < 0.001)), разницы цен и расстояний между координатами.
Граничные случаи и особенности
- Ноль остаётся нулём.
abs(0)равно0, аabs(-0.0)равно0.0. - Число уже положительное?
abs()вернёт его без изменений, поэтому функцию можно вызывать без предварительной проверки знака. - Переполнение
PHP_INT_MIN.abs(PHP_INT_MIN)не помещается в целое число (его положительный аналог на единицу большеPHP_INT_MAX), поэтому PHP возвращает его как float, чтобы избежать переполнения. - Функция не округляет.
abs()лишь убирает знак. Чтобы отбросить дробную часть, используйтеfloor(),ceil()илиround().
Связанные функции
round()— округление дробного числа до заданной точности.floor()/ceil()— округление вниз / вверх до ближайшего целого.pow()иsqrt()— возведение в степень и извлечение квадратного корня.max()/min()— выбор наибольшего или наименьшего из нескольких значений.is_numeric()— проверка, является ли значение числом, перед выполнением математических операций.
Для общего обзора числовых функций PHP см. Справочник по математике PHP.
Заключение
abs() — небольшая, но часто используемая функция: она возвращает величину числа независимо от знака, сохраняет тип входного значения и особенно удобна, когда нужно вычислить расстояние между двумя значениями. Помните, что функция не округляет, и учитывайте граничный случай с PHP_INT_MIN, когда результат возвращается как float.