I have used this formula before php 8.1
<?php
$number = 0;
echo log10(abs($number)) / 3 | 0;
echo PHP_EOL;
$number = 100;
echo log10(abs($number)) / 3 | 0;
echo PHP_EOL;
$number = 1100;
echo log10(abs($number)) / 3 | 0;
echo PHP_EOL;
$number = 10000000;
echo log10(abs($number)) / 3 | 0;
?>
It worked fine but now after upgrading I keep getting these errors
Deprecated: Implicit conversion from float -INF to int loses precision Deprecated: Implicit conversion from float 0.6666666666666666 to int loses precision Deprecated: Implicit conversion from float 1.0137975617194084 to int loses precision Deprecated: Implicit conversion from float 2.3333333333333335 to int loses precision
I can't find or understand from the 8.1 documentation why this is happening now
When you perform a bitwise OR operation via the
|operator, you get an implicit conversion to an integer. This is a...weird...way to convert to an integer. To avoid the warning, just cast explicitly.Implicit:
Explicitly pass the function:
Or via cast: