Saya telah menggunakan formula ini sebelum 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; ?>
Ia berfungsi dengan baik tetapi kini selepas menaik taraf saya terus mendapat ralat ini
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
Saya tidak dapat mencari atau memahami daripada dokumentasi 8.1 mengapa ini berlaku sekarang
Apabila anda melakukan operasi OR bitwise melalui operator
|
, anda mendapat penukaran tersirat kepada integer. Ini adalah...pelik...cara untuk menukar kepada integer. Untuk mengelakkan amaran, hanya hantar secara eksplisit.Tersirat:
Lulus fungsi secara eksplisit:
Atau melalui pelakon: