ABS()は、次のように定義されるPHPビルトイン関数です。
int|float abs ( int|float $number )
引数として整数または浮動小数点数を受け入れ、その数の絶対値を返します。
例:
<?php
echo abs(-10); // 出力 10
echo abs(5); // 出力 5
echo abs(-3.14);// 出力 3.14
?>
ABS()関数は、数値タイプに対してのみ有効です。文字列、配列、またはその他のタイプを渡すと、警告または例外が発生します。
<?php
echo abs("abc"); // Warning: A non-numeric value encountered
echo abs([1, 2]); // Warning: A non-numeric value encountered
?>
解決策: is_numeric()を使用して、変数が最初に数値であるかどうかを判断し、 ABS()を呼び出すときにエラーを回避します。
<?php
$value = "abc";
if (is_numeric($value)) {
echo abs($value);
} else {
echo "入力は数ではありません";
}
?>
ABS()プロセスが浮動小数点数を処理すると、PHPが浮動するポイント数値のストレージ方法により、精度が失われる場合があります。
<?php
echo abs(-0.000000000123456789);
?>
出力は、予想とわずかに異なる場合があります。
解決策: BCMATH拡張機能または文字列処理を使用して、高精度の数値計算を確認します。
場合によっては、PHPは-0を0として扱い、その結果、論理的判断が混乱します。
<?php
$val = -0;
var_dump(abs($val)); // 出力 int(0)
?>
ABS(-0)の出力は数学的定義と一致していますが、いくつかの特別なシナリオを区別する必要がある場合があります。
解決策:これは通常まれです。ビジネスを区別する必要がある場合は、文字列ごとに判断したり、タイプごとにキャストしたりすることができます。
<?php
$numbers = [-1, -2, 3, -4];
$absNumbers = array_map('abs', $numbers);
print_r($absNumbers);
?>
出力:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
<?php
if (isset($_GET['num']) && is_numeric($_GET['num'])) {
$num = $_GET['num'];
echo "絶対値はです:" . abs($num);
} else {
echo "有効な数値パラメーターを提供してください。";
}
?>
アクセスリンクの例:
http://gitbox.net/abs.php?num=-15