The modulo % does not work on Floats, use fmod()
https://www.php.net/manual/en/function.fmod.php
php > echo (1.1 % 1);
0
php > echo fmod(1.1, 1);
0.1
Could be a discussion on if it should, but at least at the moment it doesn't.
https://en.wikipedia.org/wiki/Modulo
has a list of languages that do/don't support modulo on floats
CARVIEW |
Select Language
HTTP/2 301
server: myracloud
date: Sat, 11 Oct 2025 09:51:24 GMT
content-type: text/html
content-length: 161
location: https://www.php.net/language.operators.arithmetic
HTTP/2 200
server: myracloud
date: Sat, 11 Oct 2025 09:51:25 GMT
content-type: text/html; charset=utf-8
content-language: en
permissions-policy: interest-cohort=()
x-frame-options: SAMEORIGIN
link: ; rel=shorturl
last-modified: Sat, 11 Oct 2025 08:07:57 GMT
content-encoding: gzip
vary: accept-encoding
expires: Sat, 11 Oct 2025 09:51:25 GMT
cache-control: max-age=0
PHP: Arithmetic - Manual
Arithmetic Operators
Remember basic arithmetic from school? These work just like those.
Example | Name | Result |
---|---|---|
+$a |
Identity | Conversion of $a to int or float as appropriate. |
-$a |
Negation | Opposite of $a. |
$a + $b |
Addition | Sum of $a and $b. |
$a - $b |
Subtraction | Difference of $a and $b. |
$a * $b |
Multiplication | Product of $a and $b. |
$a / $b |
Division | Quotient of $a and $b. |
$a % $b |
Modulo | Remainder of $a divided by $b. |
$a ** $b |
Exponentiation | Result of raising $a to the $b'th power. |
The division operator /
returns a float
value unless the two operands are int (or
numeric strings
which are type juggled to int) and the numerator is a multiple
of the divisor, in which case an integer value will be returned.
For integer division, see intdiv().
Operands of modulo are converted to int before processing. For floating-point modulo, see fmod().
The result of the modulo operator %
has the same sign
as the dividend — that is, the result of $a % $b
will have the same sign as $a. For example:
Example #1 The Modulo Operator
<?php
var_dump(5 % 3);
var_dump(5 % -3);
var_dump(-5 % 3);
var_dump(-5 % -3);
?>
The above example will output:
int(2) int(2) int(-2) int(-2)
+add a note
User Contributed Notes 1 note
flip at example dot com ¶
1 month ago

↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google