Я вижу, что некоторые другие ответы вызывают по модулю дважды.
Я предпочитаю не просить php сделать то же самое более одного раза.По этой причине я кэширую остаток.
Другие разработчики могут предпочесть не генерировать дополнительную глобальную переменную или иметь другие обоснования для использования оператора по модулю дважды.
Код: ( Demo )
$factor = 6;
for($x = 0; $x < 10; ++$x){ // battery of 10 tests
$number = rand( 0 , 100 );
echo "Number: $number Becomes: ";
if( $remainder = $number % $factor ) { // if not zero
$number += $factor - $remainder; // use cached $remainder instead of calculating again
}
echo "$number\n";
}
Возможный вывод:
Number: 80 Becomes: 84
Number: 57 Becomes: 60
Number: 94 Becomes: 96
Number: 48 Becomes: 48
Number: 80 Becomes: 84
Number: 36 Becomes: 36
Number: 17 Becomes: 18
Number: 41 Becomes: 42
Number: 3 Becomes: 6
Number: 64 Becomes: 66