Skip to main content
The %= (modulo assignment) operator is a combined arithmetic-assignment operator that divides the variable on the left operand by the expression on the right operand, and assigns the integer remainder of that division back to the left operand.

Syntax

$variable %= expression;
This is functionally equivalent to the expanded assignment form:
$variable = $variable % expression;

Technical Mechanics

  • Implicit Integer Casting: Before the modulo operation is executed, PHP strips the fractional parts of both operands, implicitly coercing them into integers. For example, 5.9 %= 2.8 is evaluated strictly as 5 % 2.
  • Signage: The sign of the resulting remainder is determined exclusively by the dividend (the left operand). The sign of the divisor (the right operand) is ignored during evaluation.
  • Floating-Point Limitation: Because the %= operator forces integer coercion, it cannot be used to find the remainder of floating-point divisions. Developers must use the fmod() function for floating-point modulo operations.
  • Exceptions: If the right operand evaluates to 0, PHP 8.0 and later will throw a DivisionByZeroError exception.

Evaluation Examples

// Standard integer evaluation
$a = 10;
$a %= 3; 
// Evaluates as: 10 % 3. $a becomes 1.

// Implicit float-to-integer coercion
$b = 10.8;
$b %= 3.9; 
// Evaluates as: 10 % 3. $b becomes 1.

// Negative dividend (result takes the sign of the left operand)
$c = -10;
$c %= 3; 
// Evaluates as: -10 % 3. $c becomes -1.

// Negative divisor (sign of the right operand is ignored)
$d = 10;
$d %= -3; 
// Evaluates as: 10 % -3. $d becomes 1.
Tired of Poor PHP Skills? Fix That With Deep Grasping!Learn More