W3docs

Математические функции PHP

Руководство по математическим функциям PHP: округление, степени, корни, min/max, тригонометрия, логарифмы, случайные числа и встроенные константы.

PHP поставляется с большим набором встроенных математических функций, которые позволяют выполнять вычисления, выходящие за рамки возможностей базовых арифметических операторов (+ - * / %). С их помощью можно округлять числа с плавающей точкой, извлекать квадратные корни и возводить в степень, работать с тригонометрией и логарифмами, а также генерировать случайные числа — без установки каких-либо расширений. Все функции, описанные здесь, входят в ядро PHP.

В этой главе рассматриваются наиболее часто используемые функции, сгруппированные по назначению, с кратким пояснением, когда каждая из них полезна. Если вы только начинаете работу с числовыми значениями в PHP, сначала прочитайте Числа в PHP.

Операторы и функции

Для обычной арифметики используйте операторы — они короче и удобнее для чтения:

<?php
echo 7 + 3;   // 10
echo 7 % 3;   // 1  (modulo: remainder)
echo 2 ** 10; // 1024 (exponentiation operator)
?>

Обращайтесь к математическим функциям, когда нужно что-то, чего операторы не могут выразить сами по себе: округление, квадратные корни, абсолютные значения, тригонометрия, логарифмы или случайные числа. Оператор ** и pow() выполняют одно и то же; остальная часть этой страницы посвящена случаям, у которых нет эквивалента в виде оператора.

Функции округления

Одна из наиболее распространённых математических операций в PHP — округление чисел до определённого знака после запятой. Функция round позволяет округлить число до ближайшего целого или до заданного числа знаков после запятой. Например, следующий код округляет число 3.14159 до двух знаков после запятой:

Пример функции round в PHP

php— editable, runs on the server

Помимо функции round, PHP также предоставляет функции ceil и floor, которые позволяют округлить число вверх или вниз до ближайшего целого. Например:

Примеры функций ceil и floor в PHP

php— editable, runs on the server

Когда использовать какую: round() округляет до ближайшего значения (и принимает точность), ceil() всегда округляет вверх, а floor() всегда округляет вниз. Обратите внимание, что ceil() и floor() возвращают float, поэтому ceil(3.1) равно 4.0, а не целому 4. Распространённая ловушка: round() по умолчанию использует правило «округление от нуля», поэтому round(2.5) равно 3, а round(-2.5) равно -3.

Степени и корни

Используйте pow() (или оператор **) для возведения числа в степень и sqrt() для извлечения квадратного корня. abs() возвращает абсолютное (неотрицательное) значение, что удобно, когда важна только величина — например, расстояние между двумя числами.

Пример функций pow, sqrt и abs в PHP

<?php

echo pow(2, 8) . "\n";  // 256
echo 2 ** 8 . "\n";     // 256 (operator form)
echo sqrt(144) . "\n";  // 12
echo abs(-17) . "\n";   // 17

// Distance between two numbers, regardless of order:
echo abs(3 - 10) . "\n"; // 7
?>

Min, Max и суммы

min() и max() возвращают наименьший и наибольший из своих аргументов. Им можно передать список значений или один массив. array_sum() и array_product() суммируют или перемножают все элементы массива.

Пример функций min, max и array_sum в PHP

<?php

echo min(4, 2, 9, 1) . "\n";          // 1
echo max([4, 2, 9, 1]) . "\n";        // 9 (works on an array too)

$prices = [19.99, 5.50, 12.00];
echo array_sum($prices) . "\n";       // 37.49
echo array_product([2, 3, 4]) . "\n"; // 24
?>

Тригонометрические функции

PHP предоставляет несколько тригонометрических функций, включая sin, cos и tan, которые позволяют вычислять синус, косинус и тангенс угла соответственно. Эти функции полезны для вычислений, связанных с углами и расстояниями в двухмерном и трёхмерном пространстве. Обратите внимание, что они принимают углы в радианах, а не в градусах. Используйте deg2rad() для преобразования градусов в радианы перед передачей в эти функции.

Пример функций sin, cos и tan в PHP

<?php

$angle = deg2rad(30);

$sine = sin($angle);
echo $sine . "\n";
// Output: 0.5

$cosine = cos($angle);
echo $cosine . "\n";
// Output: 0.866025

$tangent = tan($angle);
echo $tangent . "\n";
// Output: 0.577350

?>

Логарифмические функции

PHP предоставляет несколько логарифмических функций, включая log, log10 и exp, которые позволяют выполнять различные логарифмические операции. Функция log вычисляет натуральный логарифм числа, функция log10 — логарифм по основанию 10, а функция exp вычисляет значение экспоненты числа.

Пример функций log, log10 и exp в PHP

<?php

$num = 10;

$natural_log = log($num);
echo $natural_log . "\n";
// Output: 2.30259

$log10 = log10($num);
echo $log10 . "\n";
// Output: 1

$exponential = exp($num);
echo $exponential . "\n";
// Output: 22026.465
?>

Прочие функции

Помимо рассмотренных выше функций, PHP предоставляет ещё несколько математических функций для различных целей. Например, функция abs позволяет вычислить абсолютное значение числа, а функция pow — возвести число в степень.

Пример функций abs и pow в PHP

php— editable, runs on the server

Для целочисленного деления используйте intdiv(), а для остатка от деления числа с плавающей точкой — fmod():

<?php
echo intdiv(17, 5) . "\n"; // 3  (integer division)
echo fmod(17.5, 5) . "\n"; // 2.5 (float remainder; % only works on ints)
?>

Случайные числа

Для генерации случайных чисел используйте rand() или mt_rand() в общих целях, а random_int() — когда значение должно быть криптографически стойким (пароли, токены, OTP-коды). Все три функции принимают включительный минимум и максимум.

Пример генерации случайных чисел в PHP

<?php

$dice = rand(1, 6);          // a number from 1 to 6
echo $dice . "\n";

$secure = random_int(1, 100); // cryptographically secure 1–100
echo $secure . "\n";
?>

Поскольку результат меняется при каждом запуске, точные числа в примере выше будут разными каждый раз. Используйте random_int() всякий раз, когда случайность важна для безопасности — rand() предсказуем и не должен использоваться ни для чего секретного.

Математические константы

PHP определяет несколько встроенных констант для общепринятых значений, чтобы вам не нужно было хардкодить приближения:

<?php
echo M_PI . "\n";   // 3.1415926535898  (π)
echo M_E . "\n";    // 2.718281828459   (Euler's number)
echo M_SQRT2 . "\n";// 1.4142135623731  (√2)

// Area of a circle with radius 5:
echo M_PI * pow(5, 2) . "\n"; // 78.539816339745
?>

Константа PHP_INT_MAX сообщает максимальное целое число, которое может хранить ваша платформа; при превышении этого значения PHP автоматически преобразует результат в float. Подробнее об ограничениях целых чисел и чисел с плавающей точкой см. в разделах Числа в PHP и Типы данных PHP.

Заключение

Математический набор инструментов PHP охватывает всё: от простого округления до тригонометрии, логарифмов и криптографически стойких случайных чисел — всё встроено в язык и не требует расширений. Как правило: используйте операторы для простой арифметики, round/ceil/floor для управления точностью, min/max/array_sum для обработки коллекций и random_int() всякий раз, когда случайность должна быть непредсказуемой. Для форматирования чисел при выводе отдельно от их вычисления см. number_format.

Практика

Практика
Какие функции PHP используются для нахождения минимального и максимального значений среди заданных чисел?
Какие функции PHP используются для нахождения минимального и максимального значений среди заданных чисел?
Was this page helpful?