ABS () est une fonction intégrée PHP, définie comme suit:
int|float abs ( int|float $number )
Il accepte un entier ou un numéro de point flottant comme argument, renvoyant la valeur absolue de ce nombre.
Exemple:
<?php
echo abs(-10); // Sortir 10
echo abs(5); // Sortir 5
echo abs(-3.14);// Sortir 3.14
?>
La fonction ABS () n'est valable que pour les types numériques. Si vous passez une chaîne, un tableau ou un autre type, cela provoquera un avertissement ou une exception.
<?php
echo abs("abc"); // Warning: A non-numeric value encountered
echo abs([1, 2]); // Warning: A non-numeric value encountered
?>
Solution: utilisez is_numeric () pour déterminer si la variable est d'abord une valeur numérique et éviter une erreur lors de l'appel ABS () .
<?php
$value = "abc";
if (is_numeric($value)) {
echo abs($value);
} else {
echo "L'entrée n'est pas un nombre";
}
?>
Lorsque ABS () traite les nombres de points flottants, la précision peut être perdue en raison de la méthode de stockage des nombres de points flottants PHP.
<?php
echo abs(-0.000000000123456789);
?>
La sortie peut différer légèrement des attentes.
Solution: utilisez une extension BCMATH ou un traitement de chaîne pour assurer des calculs numériques de haute précision.
Dans certains cas, PHP traite -0 comme 0, entraînant une confusion dans les jugements logiques.
<?php
$val = -0;
var_dump(abs($val)); // Sortir int(0)
?>
Bien que la sortie de l'ABS (-0) soit conforme à la définition mathématique, il peut être nécessaire de distinguer dans certains scénarios spéciaux.
Solution: c'est généralement rare. Si l'entreprise doit distinguer, vous pouvez juger par chaîne ou type coulée par type.
<?php
$numbers = [-1, -2, 3, -4];
$absNumbers = array_map('abs', $numbers);
print_r($absNumbers);
?>
Sortir:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
<?php
if (isset($_GET['num']) && is_numeric($_GET['num'])) {
$num = $_GET['num'];
echo "La valeur absolue est:" . abs($num);
} else {
echo "Veuillez fournir des paramètres numériques valides。";
}
?>
Exemple de lien d'accès:
http://gitbox.net/abs.php?num=-15