PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのDivisionByZeroError(ゼロ除算エラー)とは?発生条件と例外処理のコード例で解説

はじめに

DivisionByZeroError クラスは、ArithmeticError クラスのサブクラスです。このエラーは、除算処理において分母の値がゼロになった場合に発生します。また、剰余演算子(%)の第2オペランドが0の場合や、intdiv() 関数の第2引数に0を指定した場合にも発生します。

DivisionByZeroErrorの発生例

最初の例では、剰余演算子 % を使って10と0の剰余演算を実行し、意図的にDivisionByZeroErrorを発生させています。try-catchブロックで例外を捕捉し、エラーメッセージを表示します。

コード例1:剰余演算子(%)の場合

<?php
try {
    $a = 10;
    $b = 0;
    $result = $a%$b;
    echo $result;
}
catch (DivisionByZeroError $e) {
    echo $e->getMessage();
}
?>

出力結果

上記のコードを実行すると、次のような結果が出力されます。

Modulo by zero

「Modulo by zero(ゼロによる剰余演算)」というメッセージが表示されました。

コード例2:intdiv()関数の場合

intdiv() 関数の第2引数に0を指定して呼び出した場合も、同様にDivisionByZeroErrorが発生します。

<?php
try {
    $a = 10;
    $b = 0;
    $result = intdiv($a,$b);
    echo $result;
}
catch (DivisionByZeroError $e) {
    echo $e->getMessage();
}
?>

出力結果

上記のコードを実行すると、次のような結果が出力されます。

Division by zero

「Division by zero(ゼロによる除算)」というエラーメッセージが表示されます。

注意点:除算演算子(/)ではエラーではなく警告になる

一方、除算演算子 / の分母に0を指定した場合には、DivisionByZeroErrorは発生しません。代わりに警告(Warning)が出力されます。これは、PHPにおいてゼロ除算の結果が定数 INF(無限大)として扱われるためです。

コード例3:除算演算子(/)の場合

<?php
try {
    $a = 10;
    $b = 0;
    $result = $a/$b;
    echo $result;
}
catch (DivisionByZeroError $e) {
    echo $e->getMessage();
}
?>

出力結果

上記のコードを実行すると、次のような結果が出力されます。

PHP Warning: Division by zero in C:\xampp\php\test.php on line 5
INF

このように、演算子ごとに挙動が異なるため、ゼロ除算が起こりうる処理では事前に分母の値をチェックするか、try-catchによる例外処理を適切に組み込むことが重要です。

  1. 【初心者向け】PHPタグとは?基本構文からショートタグまで徹底解説

    PHPタグとは?定義と基本的な使い方PHPスクリプトは、拡張子が「.php」のテキストファイルとして作成され、Webサーバー上に保存されます。サーバー上のPHPパーサーは、<?php(開始タグ)と?>(終了タグ)という特殊な文字列を探し出します。この2つのタグは「PHPタグ」と呼ばれ、その間に記述されたステートメントのみがパーサーによって解釈・実行されます。PHPタグで囲まれたコードは、HTMLドキュメントの中に自由に埋め込むことができます。埋め込まれたPHPコードはサーバー側で実行され、その処理結果だけが出力されるため、残りのHTML部分はクライアントのブラウザーにあるHTMLパ

  2. PHPのpi()関数とは?使い方と定義済み定数との対応を実例付きで解説

    pi()関数の定義と使い方PHPのpi()関数は、数学定数π(円周率)の値を返す関数です。戻り値はfloat型の「3.14159265359」であり、PHPにあらかじめ定義されている定数M_PIとまったく同じ値になります。構文pi ( void ) : floatパラメータこの関数は引数を受け取りません。引数なしでそのまま呼び出すことができます。戻り値pi()関数は数学定数πの値を返し、定義済みの数学定数M_PIと等価です。数式の中では、M_PIの代わりにpi()関数を使うこともできます。対応するPHPバージョンこの関数はPHP 4.x、PHP 5.x、PHP 7.xのすべてのバージョンで利用