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

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

作成日: 更新日:

基本的な使い方

abs関数は、与えられた数値の絶対値を取得する関数です。絶対値とは、数値を数直線上で原点(0)からどれだけ離れているかを示す距離のことで、常に0以上の値になります。この関数は、計算結果が負になる可能性のある場面で、その符号を無視して値の大きさだけを扱いたい場合や、距離や差分を表現したい場合に特に役立ちます。

abs関数は一つの引数 num をとります。この num には、絶対値を求めたい任意の数値を指定します。引数として整数(int)や浮動小数点数(float)を渡すことができます。

戻り値としては、引数 num の絶対値を返します。引数が整数型の場合は整数型(int)の値を、浮動小数点型の場合は浮動小数点型(float)の値を返します。例えば、abs(5)5 を返し、abs(-5)5 を返します。また、abs(-3.14)3.14 を返します。abs(0)0 を返します。

PHP 8以降では、abs関数に数値以外の引数(例えば文字列や配列など)を渡すと、TypeErrorが発生します。これは、型の厳密性が向上したPHPの変更点の一つです。このため、abs関数を使用する際には、引数が必ず数値であることを確認することが重要です。この関数は、数学的な計算において、値の符号に依存しない処理を行うための基本的なツールとして広く利用されています。

構文(syntax)

1<?php
2$number = -10;
3$absoluteNumber = abs($number);
4// $absoluteNumber は 10 になります。
5
6$floatNumber = -3.14;
7$absoluteFloatNumber = abs($floatNumber);
8// $absoluteFloatNumber は 3.14 になります。
9?>

引数(parameters)

int|float $num

  • int|float $num: 絶対値を計算したい整数または浮動小数点数

戻り値(return)

int|float

引数に指定された数値の絶対値を返します。絶対値とは、その数値が0からどれだけ離れているかを示す正の数です。例えば、-5の絶対値は5、3の絶対値は3となります。

サンプルコード

PHP abstractクラスで絶対値計算を実装する

1<?php
2
3declare(strict_types=1);
4
5/**
6 * 計算処理の「設計図」を定義する抽象クラス。
7 * abstract キーワードが付いているため、このクラスから直接インスタンスは生成できません。
8 * このクラスを継承する子クラスは、定義された抽象メソッドを必ず実装する必要があります。
9 */
10abstract class Calculator
11{
12    /**
13     * 計算処理の「ルール」のみを定義する抽象メソッド。
14     * 具体的な処理内容は、このクラスを継承する子クラスで実装することが強制されます。
15     *
16     * @param int|float $num 計算対象の数値
17     * @return int|float 計算結果
18     */
19    abstract public function calculate(int|float $num): int|float;
20}
21
22/**
23 * Calculator 抽象クラスを継承した具象クラス。
24 * 絶対値を計算する具体的な処理を実装します。
25 */
26class AbsoluteValueCalculator extends Calculator
27{
28    /**
29     * 与えられた数値の絶対値を計算して返します。
30     *
31     * @param int|float $num 計算対象の数値
32     * @return int|float 計算結果の絶対値
33     */
34    public function calculate(int|float $num): int|float
35    {
36        // PHPの組み込み関数 abs() を使い、数値の絶対値 (absolute value) を返します。
37        return abs($num);
38    }
39}
40
41// 具象クラスのインスタンスを生成します。
42$calculator = new AbsoluteValueCalculator();
43
44// メソッドを呼び出して、負の数の絶対値を取得します。
45$inputNumber = -99.9;
46$result = $calculator->calculate($inputNumber);
47
48// 結果を出力します。
49echo "入力値: " . $inputNumber . PHP_EOL;
50echo "計算結果 (絶対値): " . $result . PHP_EOL;
51
52?>

このコードは、PHPのabstractキーワードを用いた抽象クラスと、組み込み関数abs()を使って数値の絶対値を計算する例です。

まず、Calculatorというabstractクラスは、計算処理の「設計図」を定義します。abstractが付いているため、このクラスから直接インスタンスを生成することはできません。また、abstractメソッドであるcalculateは、具体的な処理内容を持たず、このクラスを継承する子クラスが必ず実装しなければならないルールを定めます。これにより、様々な計算処理を統一的なインターフェースで扱えるようになります。

次に、AbsoluteValueCalculatorクラスはCalculator抽象クラスを継承し、calculateメソッドを具体的に実装しています。このメソッド内でPHPの組み込み関数abs()が使用されています。abs()関数は、引数 $num として渡されたintまたはfloat型の数値の絶対値を計算し、その結果をintまたはfloat型で返します。例えば、-99.9という負の数を渡すと、その絶対値である99.9が返されます。

最後に、AbsoluteValueCalculatorクラスのインスタンスを生成し、calculateメソッドを呼び出すことで、入力値-99.9の絶対値99.9を計算し、結果を出力しています。

このサンプルコードでは、abstractキーワードを用いて「抽象クラス」と「抽象メソッド」を定義しています。抽象クラスは、具体的な処理を持たない「設計図」のようなもので、直接インスタンスを作成することはできません。もしインスタンスを作成しようとするとエラーになります。継承する子クラスは、抽象メソッドで定められた処理の「ルール」を必ず実装する必要があります。実装を忘れるとプログラムが実行できません。これにより、共通のインターフェースを強制し、プログラムの統一性と拡張性を高めることができます。

また、具体的な計算処理ではPHPの組み込み関数abs()を使用しています。この関数は、与えられた数値の絶対値(符号を除いた正の値)を返します。引数と戻り値は整数(int)または浮動小数点数(float)となり、様々な数値に対応できます。abs()関数を使うことで、負の数を正の値に変換したい場合に安全かつ簡潔に記述できます。

PHPのabs関数とInterfaceによる絶対値処理

1<?php
2
3declare(strict_types=1); // 厳格な型チェックを有効にする
4
5/**
6 * 数値処理を行うインターフェースの定義。
7 *
8 * このインターフェースは、数値を何らかの方法で処理するすべてのクラスが
9 * 従うべき「契約」を定めます。
10 * キーワード「interface」に対応しています。
11 */
12interface NumericProcessorInterface
13{
14    /**
15     * 与えられた数値を処理し、結果の数値を返します。
16     *
17     * @param int|float $number 処理対象の数値
18     * @return int|float 処理後の数値
19     */
20    public function process(int|float $number): int|float;
21}
22
23/**
24 * NumericProcessorInterface を実装し、数値の絶対値を計算するクラス。
25 *
26 * このクラスは、インターフェースで定義された `process` メソッドを実装し、
27 * その中で `abs()` 関数を使って数値の絶対値を計算します。
28 * これにより、キーワード「abs」と「interface」を関連付けています。
29 *
30 * もし複数の数値プロセッサに共通のロジックや状態が必要な場合は、
31 * `abstract` (抽象) クラスを導入し、このクラスがその抽象クラスを継承する
32 * 形にすることで、より柔軟な設計が可能です。
33 */
34final class AbsoluteValueProcessor implements NumericProcessorInterface
35{
36    /**
37     * 数値の絶対値を計算して返します。
38     *
39     * @param int|float $number 絶対値を計算する数値
40     * @return int|float 入力数値の絶対値
41     */
42    public function process(int|float $number): int|float
43    {
44        // PHP の組み込み関数 abs() を使用して絶対値を計算します。
45        // 例えば、-10.5 の絶対値は 10.5 になります。
46        return abs($number);
47    }
48}
49
50// サンプルコードの実行部分
51// AbsoluteValueProcessor クラスのインスタンスを作成します。
52$processor = new AbsoluteValueProcessor();
53
54// 異なる数値で processor を使って絶対値を計算し、結果を表示します。
55$numbersToProcess = [-5, 10.5, 0, -3.14];
56
57foreach ($numbersToProcess as $num) {
58    $absoluteValue = $processor->process($num);
59    echo "数値 {$num} の絶対値: {$absoluteValue}\n";
60}

このPHPコードは、与えられた数値の絶対値を計算するabs()関数の使用方法と、interface(インターフェース)を用いたオブジェクト指向の設計原則を示しています。

abs()関数は、引数として渡された整数(int)または浮動小数点数(float)の絶対値を返すPHPの組み込み関数です。絶対値とは、数値の符号を取り除いた正の値のことで、例えば-5の絶対値は510.5の絶対値は10.5となります。戻り値も入力と同じく整数または浮動小数点数となります。

コード中のNumericProcessorInterfaceは、数値を処理するクラスが実装すべきprocessメソッドを定義する「契約」です。これにより、どのようなクラスでもこのインターフェースを実装すれば、processメソッドを通じて一貫した方法で数値を処理できることを保証します。AbsoluteValueProcessorクラスは、このインターフェースを実装し、processメソッドの中でabs()関数を使って数値の絶対値を計算しています。

もし複数の処理クラスに共通のロジックや状態が必要な場合は、abstract(抽象)クラスを導入することで、コードの共通化と柔軟な設計が可能になります。このサンプルコードは、基本的な数値計算と、プログラムの拡張性を高めるオブジェクト指向の基礎を示しています。

PHPのabs()関数は、引数の型に応じて整数または浮動小数点数の絶対値を返します。declare(strict_types=1);により厳格な型チェックが有効になるため、引数や戻り値の型は正確に指定してください。interfaceは、クラスが実装すべきメソッドの契約を定義し、コードの一貫性と拡張性を高めます。abstractクラスは、共通の機能を持つクラス群に対して一部実装済みの基盤を提供しつつ、子クラスでの実装を強制する場合に用いる設計パターンです。finalキーワードは、クラスの継承を禁止し、意図しない変更を防ぐために使用されます。これらの設計要素を理解することで、より安全で保守性の高いコードを作成できます。

関連コンテンツ

【PHP8.x】abs関数の使い方 | いっしー@Webエンジニア