Арифметические операторы

Помните школьные основы арифметики? Описанные ниже операторы работают так же.

Арифметические операции
Пример Название Результат
-$a Отрицание Смена знака $a.
$a + $b Сложение Сумма $a и $b.
$a - $b Вычитание Разность $a и $b.
$a * $b Умножение Произведение $a и $b.
$a / $b Деление Частное от деления $a на $b.
$a % $b Деление по модулю Целочисленный остаток от деления $a на $b.

Операция деления ("/") всегда возвращает вещественный тип, даже если оба значения были целочисленными (или строками, которые преобразуются в целые числа).

Замечание: Остаток $a % $b будет негативным, для негативных значений $a.

Также вы можете ознакомиться с разделом документации Математические функции.

Коментарии

It is time for PHP to distinguish between the Reminder and the Modulus and define them correctly mathematically.

Let us assume that we have two integers a and b. Then, the reminder (denoted by r) of a (the dividend) divided by b (the divisor) should merely satisfy the equation a = q*b + r, where q is the quotient.

In case of modulus, however, it refers to a finite set originated by b, that is {0, 1, 2, ..., b-1}. The result of the modulus operation must be an element of that finite set. 
To illustrate, let us assume that a = 5, and b = 3. This means we have a finite set {0, 1, 2}. The modulus operation, a mod b or 5 mod 3, must return 2. Think about it as a loop on the elements of the set for a times, in this case 5 times.
If a = 0, then it returns 0.
If a = 1, then it returns 1.
If a = 2, then it returns 2.
If a = 3, then it returns 0.
If a = 4, then it returns 1.
If a = 5, then it returns 2.
And so on so forth. It is forward loop.

If a is negative, then it means backward or reverse loop.
If a = -1, then it returns 2.
If a = -2, then it returns 1.
If a = -3, then it returns 0.
If a = -4, then it returns 2.
If a = -5, then it returns 1.
And so on so forth.

If b is negative, then the set is constructed as follows {0, b+1, b+2, b+3, ..., -1}. So, if b = -4, then the set is {0, -3, -2, -1}. a is still the circular index of the loop, so:
If a is positive, then forward loop:
If a = 0, then it returns 0.
If a = 1, then it returns -3.
If a = 2, then it returns -2.
If a = 3, then it returns -1.
If a = 4, then it returns 0.
If a = 5, then it returns -3.
If a = 6, then it returns -2.
If a = 7, then it returns -1.
If a = 8, then it returns 0.
And so on so forth.

If a is negative, then reverse loop.
If a = -1, then it returns -1.
If a = -2, then it returns -2.
If a = -3, then it returns -3.
If a = -4, then it returns 0.
If a = -5, then it returns -1.
If a = -6, then it returns -2.
If a = -7, then it returns -3.
If a = -8, then it returns 0.
If a = -9, then it returns -1.
And so on so forth.

Therefore, the result of the modulo operator % has the same sign as the divisor, not the dividend. And the reminder has the same sign as the dividend. Moreover, though it is good to mind the sign, minding the results is far more important.
The table below summaries the differences:

<?php

  a   
a mod b  a rem b
------+-----+-----------+------------
 
13   |     1     |     1
------+-----+-----------+------------
 
13   | -|    -3     |     1
------+-----+-----------+------------
-
13   |     3     |    -1
------+-----+-----------+------------
-
13   | -|    -1     |    -1
------+-----+-----------+------------

?>
2023-04-12 15:01:31
http://php5.kiev.ua/manual/ru/language.operators.arithmetic.html

    Поддержать сайт на родительском проекте КГБ