【PHP8.x】log関数の使い方

log関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

log関数は、指定された数値の自然対数、あるいは指定された底における対数を計算する関数です。この関数は、主に数学的な計算において、特定の数値が持つ対数的な関係性を導き出す際に利用されます。

引数として、対数を計算したい数値(num)を必須で受け取ります。この数値は正の値でなければなりません。もしオプションとして第2引数に底(base)を指定した場合、その底で対数計算が行われます。底が指定されなかった場合は、数学定数e(ネイピア数)を底とする自然対数が計算されます。

計算結果は浮動小数点数(float型)として返されます。例えば、log(M_E)は1を返し、log(100, 10)は2を返します。

注意点として、引数に0や負の数、あるいは非数値が渡された場合、数学的に対数を計算できないため、戻り値はNAN(Not a Number)やINF(Infinity)といった特殊な浮動小数点値となることがあります。そのため、関数を呼び出す際には、入力値が常に正の数であることを確認することが重要です。

PHP 8では、数値演算の内部処理が改善されており、log関数も正確で安定した計算結果を提供します。科学技術計算、統計分析、アルゴリズム設計など、幅広い分野で数値の特性を分析するために活用される、基本的ながら重要な数学関数の一つです。

構文(syntax)

1float log(float $num, float $base = M_E): float

引数(parameters)

float $num, float $base = M_E

  • float $num: 対数を計算したい数値を指定する浮動小数点数
  • float $base = M_E: 対数の底を指定する浮動小数点数。指定しない場合は自然対数 (e) が使用されます

戻り値(return)

float

指定された数値の自然対数を返します。

サンプルコード

PHP log関数での対数計算と出力

1<?php
2
3declare(strict_types=1);
4
5/**
6 * log() 関数の計算結果を出力するサンプル
7 */
8function showLogCalculations(): void
9{
10    // --- 基本的な使い方: 自然対数を計算 ---
11    // log() は、第1引数に指定した数値の対数を計算します。
12    // 第2引数(底)を省略した場合、自然対数(底はネイピア数 e)が計算されます。
13    
14    // ネイピア数 e (約 2.718) の自然対数を計算します。結果は 1 になります。
15    $num1 = M_E;
16    $naturalLog = log($num1);
17
18    echo "ネイピア数 e の自然対数: " . $naturalLog . PHP_EOL; // 出力例: 1
19
20    // --- 応用的な使い方: 底を指定して対数を計算 ---
21    // 第2引数に底(base)を指定することで、常用対数など任意の底で計算できます。
22
23    // 100 を底 10 で対数計算します。結果は 2 になります (10^2 = 100 のため)。
24    $num2 = 100.0;
25    $base = 10.0;
26    $commonLog = log($num2, $base);
27
28    echo "100 の常用対数(底 10): " . $commonLog . PHP_EOL; // 出力例: 2
29    
30    // 8 を底 2 で対数計算します。結果は 3 になります (2^3 = 8 のため)。
31    $num3 = 8.0;
32    $base2 = 2.0;
33    $logBase2 = log($num3, $base2);
34    
35    echo "8 の対数(底 2): " . $logBase2 . PHP_EOL; // 出力例: 3
36}
37
38// 関数を実行して結果を出力します
39showLogCalculations();

PHPのlog()関数は、指定された数値の対数を計算するために使用されます。

この関数は最大2つの引数を受け取ります。第1引数$numには対数を求めたい数値を、第2引数$baseには対数の「底」となる数値を指定します。第2引数$baseは省略可能で、省略した場合は数学定数であるネイピア数e(PHPの定数M_E)が底として自動的に使われ、自然対数が計算されます。関数の戻り値は、計算結果の数値で、データ型は浮動小数点数(float)です。

サンプルコードでは、3つの異なる計算例を示しています。まず、ネイピア数M_Eを引数に与え、底を省略することで自然対数を計算し、結果として1が出力されます。次に、数値100を底10で対数計算(常用対数)し、10の2乗が100であるため結果は2となります。最後に、数値8を底2で計算し、2の3乗が8であるため結果は3となります。このようにlog()関数は、底を指定することで様々な対数計算に対応できます。

このlog()関数は、数学の対数計算を行うものであり、ファイルにメッセージを記録する一般的なログ出力機能とは異なります。計算の際には引数の値に注意が必要です。第1引数には正の数値を指定する必要があり、0や負の数を渡すとエラーが発生してプログラムが停止します。また、第2引数の底も正の数でなければならず、特に1を指定することはできません。底を省略した場合は、ネイピア数eを底とする自然対数が計算されます。計算結果が2や3のような整数に見える場合でも、戻り値は必ず浮動小数点数(float型)として扱われます。

PHP log() 関数で対数を計算する

1<?php
2
3/**
4 * PHPのlog()関数(数学関数)の使用例を示します。
5 * この関数は数値の自然対数、または指定された底の対数を計算します。
6 * キーワード「場所」は、計算結果が標準出力(画面)に表示される「場所」として解釈しています。
7 *
8 * @param float $value 対数を計算する数値(0より大きい必要があります)
9 * @return void
10 */
11function demonstrateLogFunction(float $value): void
12{
13    echo "--- log() 関数の計算結果の表示 ---\n";
14    echo "対象数値: " . $value . "\n\n";
15
16    if ($value <= 0) {
17        echo "注意: 0以下の数値の対数は数学的に定義されていません。\n";
18        echo "結果は通常、-INF (負の無限大) または NAN (Not a Number) になります。\n";
19        echo "この値では計算結果の「場所」を示すことができません。\n\n";
20        return;
21    }
22
23    // 1. 自然対数を計算します (底がM_E、つまりネイピア数eの場合)。
24    // log() 関数に引数を1つだけ渡すと、自動的に自然対数になります。
25    $natural_log_result = log($value);
26    echo "自然対数 (底 e): " . $natural_log_result . "\n";
27    echo "これは、eを約 " . $natural_log_result . " 乗すると " . $value . " になることを意味します。\n\n";
28
29    // 2. 常用対数を計算します (底が10の場合)。
30    // log(num, base) の形式で、第2引数に底 (この場合は10) を指定します。
31    $common_log_result = log($value, 10);
32    echo "常用対数 (底 10): " . $common_log_result . "\n";
33    echo "これは、10を約 " . $common_log_result . " 乗すると " . $value . " になることを意味します。\n\n";
34
35    // 3. 二進対数を計算します (底が2の場合)。
36    $binary_log_result = log($value, 2);
37    echo "二進対数 (底 2): " . $binary_log_result . "\n";
38    echo "これは、2を約 " . $binary_log_result . " 乗すると " . $value . " になることを意味します。\n\n";
39
40    echo "--- 上記の計算結果は、標準出力(画面)に表示される「場所」に示されています ---\n";
41}
42
43// 様々な数値でlog()関数の動作を確認します。
44demonstrateLogFunction(10.0);
45echo "\n----------------------------------------\n\n";
46
47demonstrateLogFunction(1.0); // どんな底でも1の対数は0
48echo "\n----------------------------------------\n\n";
49
50demonstrateLogFunction(M_E); // ネイピア数eの自然対数は1
51echo "\n----------------------------------------\n\n";
52
53demonstrateLogFunction(100.0); // 100の常用対数は2
54echo "\n----------------------------------------\n\n";
55
56demonstrateLogFunction(8.0); // 8の二進対数は3
57echo "\n----------------------------------------\n\n";
58
59// 0以下の数値の対数は定義されないため、エラーメッセージが表示されます。
60demonstrateLogFunction(0.0);
61echo "\n----------------------------------------\n\n";
62
63demonstrateLogFunction(-5.0);

PHPのlog()関数は、指定した数値の対数を計算するための数学関数です。

この関数は、最大で2つの引数を取ります。第1引数には、対数を計算したい数値を指定します。第2引数には、対数の「底」となる数値を指定しますが、この引数は省略可能です。第2引数を省略した場合、自動的に「自然対数」(ネイピア数eを底とする対数)が計算されます。例えば、log(10.0)は10の自然対数を求めます。

もし特定の数値を底としたい場合は、第2引数にその値を指定します。例えば、10を底とする「常用対数」を計算したい場合は log(100.0, 10) のように記述します。この計算結果は「10を何乗すれば100になるか」という問いの答え、つまり2になります。

関数の戻り値は、計算された対数の値が浮動小数点数(float型)で返されます。

サンプルコードでは、log()関数で計算した自然対数、常用対数、二進対数の結果を、echoを使用して画面(標準出力)という「場所」に表示しています。なお、数学的に0以下の数値の対数は定義されていないため、引数に0や負の数を指定すると、期待通りの結果は得られません。

PHPのlog()関数は、数値の対数を計算するための数学関数です。注意点として、この関数は引数が1つか2つかで動作が変わります。引数が1つ(log($num))の場合は自然対数を計算し、引数が2つ(log($num, $base))の場合は第2引数を底とする対数を計算します。最も重要なのは、計算対象となる第1引数は0より大きい正の数でなければならない点です。もし0や負の数を渡した場合、プログラムは停止しませんが、戻り値が-INF(負の無限大)やNAN(非数)となり、後続の計算で問題を起こす可能性があります。安全に使うために、関数に渡す前に値が正であるかを確認する処理を加えることを推奨します。

関連コンテンツ