PHP

Reszta z dzielenia, czyli modulo PHP

Daniel Wlaźlak
Reszta z dzielenia w PHP, ilustracja do artykułu
(Reszta z dzielenia w PHP, ilustracja do artykułu : envato, autor twenty20photos)

Operacja matematyczna wyznaczania reszty z dzielenia jednej liczby przez drugą w PHP to tzw. modulo. Parametr modulo w różnych językach programowania i programach może być różne, ale według standardu   ISO/IEC 14882:2003 jest to % i nie inaczej jest w języku PHP.

Na przykład, jeśli mamy dwie liczby 17 i 5, to:

17 modulo 5 = 2

Oznacza to, że dzieląc 17 przez 5, uzyskamy wynik równy 3 oraz resztę równą 2.

Jak działa operator modulo w PHP? 

Operator modulo zwraca resztę z dzielenia dwóch liczb. Oznacza to, że wynik działania a % b to reszta, która pozostaje po podzieleniu liczby a przez liczbę b. Jeśli wynik dzielenia jest liczbą całkowitą bez reszty, modulo wyniesie 0.

Jak wyznaczyć resztę z dzielenia w PHP?

print_r(10%3);  //1

print_r(10%2); //0

print_r(-10%3); //-1

Warto zauważyć, że modulo w PHP działa nie tylko dla dodatnich liczb całkowitych, ale również dla liczb ujemnych. 

Do czego potrzebna jest reszta z dzielenia?

Najczęściej podawany jest przykład, że w webowym programowaniu bardzo często używamy modulo. Np. wyznaczenie liczb parzystych i nie parzystych, poniżej pokazałem to na przykładzie dzielenia zbioru liczb na parzyste i nieparzyste. 

<?php

$numbers = [1,2,3,4,5,6,7,8,9,10];
 
foreach($numbers as $num)
{
  if($num%2 == 0)
  {
	  $even[] = $num;
   }
   else
   {
	   $odd[] = $num;
   }
}
print_r($even);

//liczby parzyste

/*
Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)
*/


print_r($odd);
//liczby nieparzyste
/*
Array
(
    [0] => 1
    [1] => 3
    [2] => 5
    [3] => 7
    [4] => 9
)
*/

W praktyce w wielu pętlach to wykorzystujemy np. przy wyznaczaniu liczb parzystych i nie parzystych, aby uzyskać zebrę

Dzielenie modulo jest też bardzo często używane w programowaniu w wyrażeniach, które sprawdzają liczby kontrolne. Operator modulo jest niezwykle potężnym narzędziem w programowaniu, szczególnie w PHP.

Operator module jest używany nie tylko do operacji matematycznych, ale również do rozwiązywania praktycznych problemów programistycznych, takich jak cykle, sprawdzanie parzystości, czy dzielenie elementów na grupy. Choć na pierwszy rzut oka może wydawać się prosty, jego zastosowania są bardzo szerokie i praktyczne w codziennym kodowaniu. Zobacz na koniec jeszcze więcej przykładów użycia w praktyce. 

Zastosowania operatora modulo w programowaniu

  • Sprawdzanie parzystości liczb

    Modulo jest często używane do sprawdzenia, czy liczba jest parzysta lub nieparzysta. W tym celu dzieli się liczbę przez 2 i sprawdza, czy reszta wynosi 0.

    <?php
    $liczba = 8;
    if ($liczba % 2 == 0) {
        echo "Liczba jest parzysta";
    } else {
        echo "Liczba jest nieparzysta";
    }
    ?>
  • Tworzenie cykli

    Modulo jest niezastąpione przy tworzeniu cykli, gdzie konieczne jest powtarzanie wartości w określonym przedziale. Na przykład, jeśli chcesz powtarzać liczby od 0 do 4, możesz zastosować modulo 5.

    <?php
    for ($i = 0; $i < 10; $i++) {
        echo $i % 5 . " "; // Wynik: 0 1 2 3 4 0 1 2 3 4
    }
    ?>
  • Zastosowanie w grach

    Operacja modulo jest często wykorzystywana w algorytmach gier do kontrolowania np. obiegu jednostek na planszy, kontrolowania liczby kroków, ruchów czy określenia, który gracz ma wykonać ruch.

  • Podział elementów na partie

    Modulo może być używane do grupowania elementów w partie, np. przy tworzeniu siatki elementów na stronie internetowej. Można za jego pomocą określić, czy dany element powinien znajdować się w nowym wierszu.

    <?php
    $elements = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
    foreach ($elements as $index => $element) {
        if ($index % 3 == 0) {
            echo "<br>"; // Nowy wiersz co 3 elementy
        }
        echo $element . " ";
    }
    ?>
  • Rozwiązywanie problemów matematycznych

    Modulo może być również używane do rozwiązywania różnego rodzaju problemów matematycznych, np. problem Chińskich Reszt czy wykrywania cykli w sekwencjach.

Operacja modulo w różnych językach programowania

  • Python: Oprócz %, można użyć funkcji math.fmod(a, b) do obliczenia reszty, szczególnie gdy operacje obejmują liczby zmiennoprzecinkowe.
  • Ruby: Można używać %, ale istnieje również metoda a.modulo(b).
  • R: Symbol %% jest używany do operacji modulo.
  • Matlab/Octave: Używa się funkcji mod(a, b).
  • Haskell: Używa się funkcji mod a b.
  • SQL: Operacja modulo może być oznaczona przez MOD(a, b) lub a % b, w zależności od systemu baz danych.
  • Fortran: W Fortranie używa się funkcji MOD(a, b).
  • Scala: % jest standardowym operatorem, ale istnieje również metoda a.mod(b).
  • F#: Używa a % b, ale można też używać mod jako funkcji.

Każdy z tych języków posiada operację modulo, ale sposób jej zapisu może się różnić, w zależności od składni specyficznej dla danego języka.


Czy ten artykuł był Ci pomocny? Jesteśmy doświadczoną agencją SEO, skontakuj się z nami, jeśli potrzebujesz pomocy ze swoją stroną.

Prowadziłem i rozwijałem działy SEO w bardzo dużych wydawnictwach (Agora, gazeta.pl). Specjalizuję się w tworzeniu kompleksowych rozwiązań zasięgowych oraz programowaniu. @wlazlak

Spotkajmy się też w moich social media :
Zobacz moje wszystkie artykuły
Zaufali nam:
ElbudBis
Instytu cyfrowego obywatelstwa
Kinesso
Fundacja Orange
Rodzice.pl

Współpracuj z nami!

Naszą mocą jest technologia i doświadczony zespół

Przez lata zdobywaliśmy doświadczenie u największych wydawców w Polsce, a teraz zadbamy o rozwój Twojej firmy od strategii wzrostu po wdrożenia na stronach dzięki naszemu własnemu software house'owi. Zaufaj nam, aby osiągać dobre wyniki.

Porozmawiajmy o Twoich celach i potrzebach!

Przejrzyj najnowsze artykuły i wpisy na naszym blogu