Кратность числа в PHP

phpИногда случаются ситуации, когда необходимо проверить одного чиста другому. Как правило, это нужно при оформлении прайс-листов или каких либо списков, в которых было бы не плохо выделить каждую вторую или третью строчку для удобочитаемости.
Первое что приходит на ум новичку в программировании, это разделить одно число на другое, и вычесть целую часть результата из частного. Т.е. получить дробную часть от деления. А дальше все просто, если дробная ясть НЕ равна нулю, то число НЕ кратно второму. И наоборот. Если дробная часть равна нулю, то число кратно второму.
Допустим есть переменная $a, которую нужно проверить на кратность числу $b, тогда будет выглядеть примерно так:

<?php
$x = $a / $b;
$y = intval ($x); // Выделяем целую часть от деления.
$z = $x — $y;
if ($z == 0) {
echo «Число $a кратно числу $b»;
}else{
echo «Число $a НЕ кратно числу $b»;
}
?>

Данную программу можно немного упростить, не делать лишнее вычисление, а проверить два числа $x и $y на равенство. Ведь, если результат деления и целая часть от этого деления равны, то и дробная часть, соответственно, будет равна нулю.
Тогда программа проверки будет выглядеть так:

<?php
$x = $a / $b;
$y = intval ($x); // Выделяем целую часть от деления.
if ($x == $y) {
echo «Число $a кратно числу $b»;
}else{
echo «Число $a НЕ кратно числу $b»;
}
?>

Однако, умные люди за нас уже подумали и подобных схем выстраивать не обязательно.
Есть такое интересное математическое действие, которое обозначается в php (да и не только в php) как процент % (вместо знака деления).
Т.е. пишем $z = $a % $b;
В переменную $z будет записано значение дробной части от деления $a / $b.
В общем, выполнение одного данного деления заменяет собой сразу три вычисления:
$x = $a / $b;
$y = intval ($x); // Выделяем целую часть от деления.
$z = $x — $y;

Таким образом, первый рассмотренный вариант кода из восьми строчек сокращается до шести:

<?php
$z = $a % $b; // Присваиваем переменной $z дробную часть от деления $a / $b
if ($z == 0) {
echo «Число $a кратно числу $b»;
}else{
echo «Число $a НЕ кратно числу $b»;
}
?>

Данный код можно сократить на одну строчку, записав его следующим образом:

<?php
if (!($a % $b)) {
echo «Число $a кратно числу $b»;
}else{
echo «Число $a НЕ кратно числу $b»;
}
?>

В данном случае мы проверяем дробную часть от деления двух чисел на его отсутствие (восклицательный знак обозначает логическое «НЕ»). Если результат вычисления $a % $b НЕ имеет значения (или равен нулю), то число $a кратно $b иначе НЕ кратно.

или

<?php
if ($a % $b) {
echo «Число $a НЕ кратно числу $b»;
}else{
echo «Число $a кратно числу $b»;
}
?>

 

  • Phantom

    Ну тогда можно и в одну строку:

  • Денис

    >>>Т.е. пишем $z = $a % $b;

    >>>В переменную $z будет записано значение дробной части от деления $a / $b.

    % — выдает остаток отделения, а не дробную часть. Это разные понятия. 5 % 3 = 2, а 5 / 3 — intval ( 5 / 3) = 0,6666 (6)

Запись навигация

Top