Что означает знак процента в PHP? - PullRequest
40 голосов
/ 20 декабря 2009

Что именно это значит?

$number = ( 3 - 2 + 7 ) % 7;

Ответы [ 6 ]

76 голосов
/ 20 декабря 2009

Как уже упоминалось, это модуль , который возвращает остаток от операции деления.

Примеры: 3%5 возвращает 3, так как 3, деленное на 5, равно 0 с остатком 3.

5 % 10 возвращает 5, по той же причине 10 переходит в 5 нулевых раз с остатком 5.

10 % 5 возвращает 0, так как 10, деленное на 5, идет ровно 2 раза без остатка.

В примере, который вы разместили, (3 - 2 + 7) работает до 8, давая вам 8 % 7, поэтому $number будет 1, что является остатком от 8/7.

18 голосов
/ 20 декабря 2009

Это оператор модуля :

$a % $b = Остаток $a делится на $b.

Он часто используется для получения "одного элемента на каждые N элементов". Например, чтобы получить только один элемент на каждые три элемента:

for ($i=0 ; $i<10 ; $i++) {
    if ($i % 3 === 0) {
        echo $i . '<br />';
    }
}

Который получает этот вывод:

0
3
6
9

(Да, хорошо, $i+=3 сделал бы трюк; но это была просто демонстрация.)

12 голосов
/ 20 декабря 2009

Это оператор модуль . В операторе $a % $b результатом является остаток, когда $a делится на $b

4 голосов
/ 30 апреля 2012

Используя этот оператор, можно легко рассчитать нечетные или четные дни в месяце, например, если это необходимо для расписания или что-то еще:

<?php echo (date(j) % 2 == 0) ? 'Today is even date' : 'Today is odd date'; ?>
3 голосов
/ 21 октября 2014

Так как многие люди говорят, что "модуль находит остаток от делителя", давайте начнем с точного определения, что такое остаток.

В математике остаток представляет собой сумму, оставшуюся после выполняя некоторые вычисления. В арифметике остаток целое число"осталось" после деления одного целого числа на другое для получения целое отношение (целочисленное деление).

См .: http://en.wikipedia.org/wiki/Remainder

Таким образом, модуль - это простой способ спросить: «Сколько делителя осталось после деления?»

Чтобы использовать вычисление OP для (3 - 2 + 7) = 8 % 7 = 1:

Это можно разбить на:

(3 - 2 + 7) = 8
8 / 7 = 1.143 #Rounded up
.143 * 7 = 1.001 #Which results in an integer of 1

7 может войти в 8 1 раз с остатком .14 из 7

Это все, что нужно сделать. Надеюсь, это поможет упростить работу модуля.


Дополнительные примеры использования различных делителей с 21.

Распределение 21 % 3 = 0:

21 / 3  = 7.0
3 * 0 = 0

(3 могут войти в 21 7 раз с остатком 0 из 3)

Разбивка 21 % 6 = 3:

21 / 6 = 3.5
.5 * 6 = 3

(6 могут войти в 21 3 раза с остатком .5 из 6)

Распределение 21 % 8 = 5:

21 / 8 = 2.625
.625 * 8 = 5

(8 может войти в 21 2 раза с 0,625 из 8 остатка)

2 голосов
/ 12 июля 2014

% означает модуль.

Модуль - причудливое название для «остаток после деления» в математике.

(numerator) mod (denominator) = (remainder)

В PHP

<?php
    $n = 13;
    $d = 7
    $r = "$n % $d";
    echo "$r is ($n mod $d).";
?>

В этом случае этот скрипт будет отображаться

6 is (13 mod 7).

Где $r для остатка (ответ), $n для числителя и $d для знаменателя. Оператор модуля обычно используется в криптографии с открытым ключом благодаря его особой характеристике как односторонняя функция .

...