【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 抽象クラスで絶対値処理する
1<?php 2 3/** 4 * 数値を処理するための基本的なインターフェースを定義する抽象クラス。 5 * 6 * 抽象クラスは、具体的な実装を持たない抽象メソッドを定義できます。 7 * これらの抽象メソッドは、この抽象クラスを継承する具象クラスで必ず実装されなければなりません。 8 * これにより、異なる具体的な処理に対して共通のインターフェースを提供しつつ、 9 * 処理内容の強制と柔軟性を持たせることができます。 10 * 11 * キーワード: php abstract function 12 */ 13abstract class AbstractNumberProcessor 14{ 15 /** 16 * 指定された数値を処理する抽象メソッド。 17 * 18 * このメソッドの具体的な実装は、この抽象クラスを継承する具象クラスに委ねられます。 19 * 引数と戻り値の型は、PHPの組み込み関数 abs() の仕様に合わせて int|float を指定しています。 20 * 21 * @param int|float $num 処理する数値 (整数または浮動小数点数) 22 * @return int|float 処理結果 (整数または浮動小数点数) 23 */ 24 abstract public function process(int|float $num): int|float; 25} 26 27/** 28 * AbstractNumberProcessor を継承し、数値の絶対値を計算する具象クラス。 29 * 30 * このクラスは、親クラスで定義された抽象メソッド process() を実装し、 31 * PHPの組み込み関数 abs() を使用して与えられた数値の絶対値を返します。 32 * 33 * キーワード: abs 34 */ 35class AbsoluteValueProcessor extends AbstractNumberProcessor 36{ 37 /** 38 * 与えられた数値の絶対値を計算し、返します。 39 * 40 * PHPの組み込み関数 `abs()` は、数値の絶対値(符号を除いた値)を計算します。 41 * 例えば、-5 の絶対値は 5、10 の絶対値は 10 です。 42 * 43 * @param int|float $num 絶対値を計算する数値 44 * @return int|float 計算された絶対値 45 */ 46 public function process(int|float $num): int|float 47 { 48 // PHPの組み込み関数 abs() を使用して絶対値を計算します。 49 // リファレンス情報: abs(int|float $num) -> int|float 50 return abs($num); 51 } 52} 53 54// --- サンプルコードの実行例 --- 55 56echo "--- AbsoluteValueProcessor の使用例 ---" . PHP_EOL; 57 58// AbsoluteValueProcessor クラスのインスタンスを作成します。 59// これにより、AbstractNumberProcessor で定義された process() メソッドの 60// 具体的な実装(この場合は絶対値の計算)が利用可能になります。 61$processor = new AbsoluteValueProcessor(); 62 63// 正の数の絶対値を計算 64$positiveNumber = 10; 65$resultPositive = $processor->process($positiveNumber); 66echo "数値 {$positiveNumber} の絶対値: {$resultPositive}" . PHP_EOL; // 出力: 10 67 68// 負の数の絶対値を計算 (浮動小数点数) 69$negativeNumber = -5.75; 70$resultNegative = $processor->process($negativeNumber); 71echo "数値 {$negativeNumber} の絶対値: {$resultNegative}" . PHP_EOL; // 出力: 5.75 72 73// 0 の絶対値を計算 74$zeroNumber = 0; 75$resultZero = $processor->process($zeroNumber); 76echo "数値 {$zeroNumber} の絶対値: {$resultZero}" . PHP_EOL; // 出力: 0 77 78?>
このPHPコードは、「抽象クラス」と「抽象メソッド」の基本的な使い方、そして組み込み関数であるabs()の利用方法をシステムエンジニアを目指す初心者向けに示しています。
まず、AbstractNumberProcessorは数値処理の共通の「型」を定義する抽象クラスです。このクラスに定義されたprocessメソッドは抽象メソッドであり、具体的な処理内容は記述されていません。抽象メソッドを宣言することで、この抽象クラスを継承するクラス(子クラス)は、必ずこのprocessメソッドを実装する義務が生じます。これにより、異なる具体的な処理を行うクラス間でも、共通のメソッド名で処理を呼び出せるようになります。引数と戻り値の型は、整数(int)または浮動小数点数(float)を指定しています。
次に、AbsoluteValueProcessorクラスは、AbstractNumberProcessorを継承し、抽象メソッドであるprocessを具体的に実装しています。この実装では、PHPの組み込み関数であるabs()を使用しています。abs()関数は、引数として渡されたint型またはfloat型の数値の「絶対値」(符号を除いた値)を計算し、int型またはfloat型で返します。例えば、-5であれば5を、10であれば10を返します。
サンプルコードの実行部分では、AbsoluteValueProcessorのインスタンスを作成し、正の数、負の数、ゼロのそれぞれに対してprocessメソッドを呼び出しています。これにより、abs()関数によって計算された絶対値が正しく出力されることを確認できます。
このサンプルコードはPHPのabs()関数と抽象クラス・抽象メソッドの利用法を示しています。abs()関数は、引数として与えられた数値の絶対値を計算し、常に非負の整数か浮動小数点数で返します。PHP 8では引数にintまたはfloat以外の型を渡すとTypeErrorが発生するため、数値型を渡すことに特に注意してください。また、abstractと付いたクラスは直接インスタンス化できず、abstractメソッドはそれを継承した子クラスで必ず実装しなければなりません。実装を忘れるとプログラムが実行時にエラーとなるため、このルールを理解しておくことが重要です。引数や戻り値に指定されているint|floatは、PHP 8で導入された「ユニオン型」と呼ばれ、複数の型を受け入れる(または返す)ことを意味しています。
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の絶対値は5、10.5の絶対値は10.5となります。戻り値も入力と同じく整数または浮動小数点数となります。
コード中のNumericProcessorInterfaceは、数値を処理するクラスが実装すべきprocessメソッドを定義する「契約」です。これにより、どのようなクラスでもこのインターフェースを実装すれば、processメソッドを通じて一貫した方法で数値を処理できることを保証します。AbsoluteValueProcessorクラスは、このインターフェースを実装し、processメソッドの中でabs()関数を使って数値の絶対値を計算しています。
もし複数の処理クラスに共通のロジックや状態が必要な場合は、abstract(抽象)クラスを導入することで、コードの共通化と柔軟な設計が可能になります。このサンプルコードは、基本的な数値計算と、プログラムの拡張性を高めるオブジェクト指向の基礎を示しています。
PHPのabs()関数は、引数の型に応じて整数または浮動小数点数の絶対値を返します。declare(strict_types=1);により厳格な型チェックが有効になるため、引数や戻り値の型は正確に指定してください。interfaceは、クラスが実装すべきメソッドの契約を定義し、コードの一貫性と拡張性を高めます。abstractクラスは、共通の機能を持つクラス群に対して一部実装済みの基盤を提供しつつ、子クラスでの実装を強制する場合に用いる設計パターンです。finalキーワードは、クラスの継承を禁止し、意図しない変更を防ぐために使用されます。これらの設計要素を理解することで、より安全で保守性の高いコードを作成できます。