abs()
(PHP 4, PHP 5, PHP 7)
绝对值
说明
abs(mixed $number):number
返回参数$number的绝对值。
参数
- $number
要处理的数字值
返回值
$number的绝对值。如果参数$number是float,则返回的类型也是float,否则返回integer(因为float通常比integer有更大的取值范围)。
范例
Example #1abs()例子
<?php $abs = abs(-4.2); // $abs = 4.2; (double/float) $abs2 = abs(5); // $abs2 = 5; (integer) $abs3 = abs(-5); // $abs3 = 5; (integer) ?>
参见
gmp_abs()Absolute valuegmp_sign()Sign of number
<?php
$arr = array();
for ($i = 0; $i < 1000; $i++) $arr[] = rand(-100, 100);
$start = microtime(true);
for ($i = 0; $i < 1000; $i++){
foreach ($arr as $v) $v = abs($v);
}
echo number_format(microtime(true) - $start, 4).'<br />';
$start = microtime(true);
for ($i = 0; $i < 1000; $i++){
foreach ($arr as $v) if ($v < 0) $v = abs($v);
}
echo number_format(microtime(true) - $start, 4).'<br />';
$start = microtime(true);
for ($i = 0; $i < 1000; $i++){
foreach ($arr as $v) if ($v < 0) $v *= -1;
}
echo number_format(microtime(true) - $start, 4).'<br />';
?>
Result:
1.4061
0.9697
0.2805
Conclusion: better to check before using the feature that the number is less than zero. Even better use multiplication by -1 than this function.[*EDIT* by danbrown AT php DOT net: Merged user's corrected code with previous post content.]
jeremys indicated one thing - there is no sgn function wich actually seems a bit strange for me. Of course it is as simple as possible, but it is usefull and it is a standard math function needed occasionally.
Well, I have solved this function in a bit different matter:
<?php
function sgn($liczba)
{
if($liczba>0)
$liczba=1;
else if($liczba<0)
$liczba=-1;
else if(!is_numeric($liczba))
$liczba=null;
else
$liczba=0;
return $liczba;
}
?>
The difference is that it returns null when the argument isn't a number at all.