ホーム › エラー解決 › PHP › Division by zero
PHP ERROR

PHP DivisionByZeroError の原因と解決法

0で割り算を行うと発生するエラーです。PHP 8からは警告ではなく例外として即座に停止するようになりました。

このエラーメッセージ

PHP Fatal error: Uncaught DivisionByZeroError: Division by zero

原因

❌ エラーになるコード

NG
<?php
$scores = []; // 空の配列
$total = array_sum($scores);
$average = $total / count($scores);
echo "平均: " . $average;

✅ 修正したコード

OK
<?php
$scores = [];
$total = array_sum($scores);
$count = count($scores);
$average = $count > 0 ? $total / $count : 0;
echo "平均: " . $average;
▶ 修正済みコードを実行エディタで開く
progoのPHP実行環境(インストール不要・登録不要)でその場で動作を確認できます。

解決のポイント

割り算の前に割る数が0でないかを確認するのが鉄則です。三項演算子で$count > 0 ? $total / $count : 0のように書くと簡潔です。特に「配列の要素数で割る」「入力値で割る」処理は0になるケースを必ず想定しましょう。

よくある質問

剰余演算子(%)でも起きる?
はい。0で剰余を取るとModuloByZeroErrorになります。同様に事前チェックが必要です。
PHP 7では動いていたのになぜ?
PHP 7まではWarningを出してfalseやINFを返していましたが、PHP 8.0からDivisionByZeroError例外に変わり処理が停止します。