log()
Функция log() в PHP вычисляет натуральный логарифм числа или логарифм по произвольному основанию.
Функция log() в PHP возвращает логарифм числа. По умолчанию она возвращает натуральный логарифм — логарифм по основанию e (число Эйлера, приблизительно 2.71828) — но можно передать второй аргумент для вычисления логарифма по любому основанию.
Логарифм отвечает на вопрос «в какую степень нужно возвести основание, чтобы получить данное число?» Например, log(8, 2) равно 3, потому что 2 в степени 3 равно 8. На этой странице рассматриваются синтаксис, распространённые основания, поведение в граничных случаях и практический пример использования.
Синтаксис
log(float $num, float $base = M_E): float| Параметр | Описание |
|---|---|
$num | Число, логарифм которого нужно вычислить. Должно быть положительным для получения вещественного результата. |
$base | Необязательный. Основание логарифма. По умолчанию равно M_E (≈ 2.71828), что даёт натуральный логарифм. |
Функция возвращает значение типа float: логарифм числа $num по заданному основанию.
Базовый пример: натуральный логарифм
При вызове log() с одним аргументом возвращается натуральный логарифм (основание e):
Использование произвольного основания
Передайте второй аргумент для вычисления логарифма по другому основанию. Это удобно для логарифмов по основанию 2 (двоичный) или по основанию 10 (десятичный):
<?php
echo log(100, 10), "\n"; // 2 (10^2 = 100)
echo log(8, 2), "\n"; // 3 (2^3 = 8)
echo log(1, 5), "\n"; // 0 (any base^0 = 1)
?>Для основания 10 в PHP также есть специализированная функция log10(), а для малых значений, близких к 1, существует log1p(), которая точнее, чем log(1 + x).
Граничные случаи
Математический логарифм определён только для положительных чисел, поэтому за пределами этого диапазона log() возвращает специальные значения типа float:
<?php
echo log(1), "\n"; // 0 — log of 1 is always 0
echo log(0), "\n"; // -INF — log of 0 is negative infinity
echo log(-5), "\n"; // NAN — log of a negative number is "not a number"
?>Поскольку NAN и INF незаметно распространяются через арифметические операции, проверяйте входные данные перед вызовом log():
<?php
$value = -5;
if ($value > 0) {
echo log($value);
} else {
echo "log() requires a positive number";
}
// Outputs: log() requires a positive number
?>Вы можете обнаружить эти результаты с помощью is_nan() и is_infinite(), если значение попало в log() без предварительной проверки.
Практический пример использования
Логарифмы часто используются, когда нужно узнать количество цифр в числе или для масштабирования данных. Например, количество десятичных цифр в положительном целом числе равно floor(log10($n)) + 1:
<?php
$n = 12345;
$digits = (int) floor(log10($n)) + 1;
echo "{$n} has {$digits} digits"; // Outputs: 12345 has 5 digits
?>Связанные функции
log10()— логарифм по основанию 10.log1p()— точное вычислениеlog(1 + x)для малыхx.exp()— обратная функция натурального логарифма (числоeв степени).pow()— возведение числа в степень.sqrt()— квадратный корень.- Математические функции PHP — обзор всех математических функций.
Заключение
Функция log() — надёжный инструмент для логарифмических вычислений в PHP. Благодаря необязательному второму аргументу она работает с любым основанием, а натуральный логарифм по умолчанию покрывает наиболее распространённые задачи. Помните о граничных случаях — log(0) возвращает -INF, а log() от отрицательного числа возвращает NAN — и проверяйте входные данные, чтобы вычисления оставались корректными.