【PHP】絶対値を取得する方法|abs()の使い方・戻り値の型と入力チェックの注意

PHPで数値の絶対値(符号を取り除いた値)を取得するには abs() 関数を使います。使い方はシンプルですが、戻り値の型や、フォーム入力をそのまま渡したときのPHP 8でのエラーには注意が必要です。この記事では基本から実用例、つまずきやすいポイントまでまとめます。

この記事の結論:絶対値は abs($number) で取得します。整数を渡せば整数、浮動小数点を渡せば浮動小数点が返ります。フォーム入力など非数値の可能性がある値は、先に数値へキャストしてから渡します。
スポンサーリンク

abs()関数の基本的な使い方

abs() は引数の絶対値を返します。負の数は正に、正の数はそのまま返ります。

abs()の基本
<?php
echo abs(-10);     // 10
echo abs(20);      // 20
echo abs(-15.75);  // 15.75

戻り値の型に注意

abs() の戻り値の型は引数の型に従います。整数なら整数、浮動小数点なら浮動小数点が返ります。

戻り値の型
<?php
var_dump(abs(-10));    // int(10)
var_dump(abs(-15.75)); // float(15.75)
var_dump(abs("-42"));  // int(42)(数値文字列は数値に変換される)
フォーム入力をそのまま abs() に渡さないでください。$_POST の値は文字列で、数字以外(空文字や文字列)が入ることがあります。PHP 8 では非数値の文字列を渡すと TypeError になります(PHP 7では警告+0)。先に (float) でキャストするか、is_numeric() で確認してから渡しましょう。
入力を安全に処理する
<?php
$input = $_POST['number'] ?? '';

if (is_numeric($input)) {
    echo abs((float)$input);
} else {
    echo '数値を入力してください';
}

実用例:2つの値の差の大きさ

2つの値の差は、引く順番によって符号が変わります。abs() を使えば、順番に関係なく「差の大きさ」を得られます。しきい値の判定などに便利です。

差の絶対値でしきい値判定
<?php
$expected = 100;
$actual   = 93;

$diff = abs($expected - $actual); // 7(順番に関係なく差の大きさ)

if ($diff <= 5) {
    echo '許容範囲内です';
} else {
    echo "誤差が大きすぎます(差: $diff)";
}

あわせて使う数値関数

関数 用途
abs() 絶対値
round() 四捨五入
ceil() / floor() 切り上げ / 切り捨て
max() / min() 最大値 / 最小値
intdiv() / % 整数除算 / 余り
四捨五入・切り上げ・切り捨ては数値を四捨五入、切り上げ、切り捨てする方法、最大・最小は最大値と最小値を取得する、桁区切りはnumber_formatで数値をカンマ区切りにする方法で解説しています。

よくある質問(FAQ)

Qabs()の戻り値は常に整数ですか?
Aいいえ。引数の型に従います。整数を渡せば整数、浮動小数点を渡せば浮動小数点が返ります(例: abs(-15.75)float(15.75))。
Qフォームの入力値をabs()に渡したらエラーになりました。
A$_POST の値は文字列で、非数値が入るとPHP 8では TypeError になります。is_numeric() で確認し、(float)(int) にキャストしてから渡してください。
Q2つの数値の差を必ず正の数で取得したいです。
Aabs($a - $b) を使います。引く順番に関係なく差の大きさが得られるため、誤差やしきい値の判定に便利です。
Qマイナスを0にしたいだけの場合もabs()でよいですか?
A「負の数を0にする」だけなら max(0, $value) が適切です。abs()-55 にしますが、max(0, -5)0 にします。目的に合わせて選びましょう。

まとめ

PHPで絶対値を取得するポイントを整理します。

  • 絶対値は abs($number)
  • 戻り値の型は引数に従う(int→int、float→float)
  • フォーム入力はキャスト/is_numeric() で検証してから渡す(PHP 8はTypeError)
  • 差の大きさは abs($a - $b) で順番を気にせず取得できる
  • 「負を0にする」だけなら max(0, $value) が適切

関連として、四捨五入・切り上げ・切り捨て最大値と最小値0埋めをする方法もあわせて読むと、PHPの数値処理に強くなれます。