W3docs

abs()

Функция abs() в PHP возвращает абсолютное значение числа — его величину без знака.

Функция abs() возвращает абсолютное значение числа — его величину без знака. Иными словами, она показывает, насколько число удалено от нуля, поэтому abs(-5) и abs(5) оба дают 5. На этой странице рассматриваются синтаксис, возвращаемые типы, важные граничные случаи и наиболее распространённые практические применения.

Синтаксис

abs(int|float $num): int|float
  • $num — число, абсолютное значение которого нужно получить (целое или дробное).
  • Возвращаемое значение — абсолютное значение $num. Тип возвращаемого значения совпадает с типом входного: передаёте целое — получаете целое; передаёте дробное — получаете дробное.

Базовый пример

php— editable, runs on the server

Это выведет 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.

Практика

Практика
Какова роль функции abs() в PHP?
Какова роль функции abs() в PHP?
Was this page helpful?