Operatore modulo in PHP: usare % per lavorare con i resti

by theArchitect
SHARE
Operatore modulo in PHP: usare % per lavorare con i resti
© Guida-HTML5.it

Introduzione

Tra gli operatori di PHP ce n’è uno molto utile, spesso sottovalutato, che serve quando devi lavorare con numeri interi, cicli, controlli periodici o validazioni: l’operatore modulo, rappresentato dal simbolo %.

Questo operatore restituisce il resto della divisione tra due numeri. In pratica, ti dice “quanto avanza” dopo aver diviso un valore per un altro. È uno strumento semplice, ma estremamente pratico in tanti contesti reali: verificare se un numero è pari o dispari, distribuire elementi in modo ciclico, gestire paginazioni, alternare colori nelle tabelle, creare logiche basate su intervalli ripetuti e molto altro.

In questo tutorial vedremo come funziona il modulo in PHP, come usarlo correttamente e quali errori evitare. L’obiettivo è capire non solo la sintassi, ma anche quando conviene usarlo davvero in un progetto.

Codice completo

<?php

// Esempio 1: verificare se un numero è pari o dispari
$numero = 18;

if ($numero % 2 === 0) {
    echo $numero . " è parin";
} else {
    echo $numero . " è disparin";
}

// Esempio 2: ciclo per assegnare una classe alternata a una lista
$prodotti = ["Mouse", "Tastiera", "Monitor", "Webcam", "Cuffie"];

foreach ($prodotti as $indice => $prodotto) {
    $classe = ($indice % 2 === 0) ? "riga-chiara" : "riga-scura";
    echo $prodotto . " - " . $classe . "n";
}

// Esempio 3: calendario semplificato con giorni ripetuti
$giorniSettimana = ["Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"];

for ($i = 0; $i < 14; $i++) {
    $giorno = $giorniSettimana[$i % 7];
    echo "Giorno " . ($i + 1) . ": " . $giorno . "n";
}

// Esempio 4: controllo di validità su un ID
$idOrdine = 2457;
$blocco = 5;

if ($idOrdine % $blocco === 0) {
    echo "L´ordine " . $idOrdine . " appartiene a un blocco completo.n";
} else {
    echo "L´ordine " . $idOrdine . " non completa un blocco da " . $blocco . ".n";
}

// Esempio 5: evitare divisioni per zero
$dividendo = 10;
$divisore = 0;

if ($divisore !== 0) {
    $resto = $dividendo % $divisore;
    echo "Resto: " . $resto . "n";
} else {
    echo "Errore: non è possibile usare il modulo con zero.n";
}
?>

Spiegazione

Cos’è l’operatore modulo

L’operatore modulo % esegue una divisione e restituisce il resto. Ad esempio:

10 % 3 = 1

Perché 10 diviso 3 fa 3 con resto 1. In PHP, questo risultato è molto utile quando vuoi sapere se un valore “cade” esattamente in una divisione oppure no.

Verificare se un numero è pari o dispari

Uno degli usi più comuni del modulo è il controllo di parità:

  • se $numero % 2 === 0, il numero è pari;
  • se il resto è diverso da 0, il numero è dispari.

È un controllo rapido e leggibile, spesso usato in algoritmi, filtri e logiche di visualizzazione.

Alternare comportamenti in un ciclo

Nel secondo esempio abbiamo usato il modulo per assegnare una classe CSS alternata agli elementi di una lista. Questo approccio è molto comune quando vuoi:

  • colorare righe di una tabella in modo alternato;
  • mostrare elementi con stile diverso a seconda della posizione;
  • distribuire carichi o eventi in modo ciclico.

La logica $indice % 2 permette di distinguere facilmente tra posizioni pari e dispari.

Usare il modulo per creare cicli ripetuti

Nel terzo esempio, il modulo serve a ripetere un array di 7 giorni della settimana per 14 iterazioni. Qui il trucco è questo:

$i % 7

Quando $i cresce oltre 6, il risultato torna a 0 e il ciclo ricomincia dal primo elemento dell’array. Questo schema è molto utile per:

  • caroselli di immagini;
  • liste cicliche;
  • turni di lavoro;
  • rotazione di configurazioni o temi.

Controlli applicativi reali

Nel quarto esempio il modulo viene usato per verificare se un ID appartiene a un blocco completo. In contesti reali, una logica simile può servire per:

  • raggruppare record in batch;
  • attivare processi periodici;
  • eseguire azioni ogni N elementi;
  • ottimizzare operazioni ripetitive.

Attenzione alla divisione per zero

Come per la divisione classica, anche il modulo non può essere eseguito con un divisore uguale a zero. In PHP questo genererebbe un errore. Per questo motivo, prima di usare %, è sempre bene verificare che il divisore sia diverso da zero.

Best practice

  • Usa il modulo solo con numeri interi quando possibile: il suo significato è più chiaro e prevedibile.
  • Controlla sempre il divisore prima di applicare %, per evitare errori a runtime.
  • Usa confronti stretti come === 0 quando verifichi il resto, così eviti ambiguità di tipo.
  • Dai nomi chiari alle variabili: ad esempio $indice, $resto, $blocco, $divisore.
  • Non abusare del modulo: se la logica diventa poco leggibile, valuta di estrarla in una funzione dedicata.
  • Commenta i casi ciclici quando il modulo viene usato per rotazioni o pattern ripetuti, così il codice resta comprensibile nel tempo.

Riepilogo

L’operatore modulo % è uno degli strumenti più pratici tra gli operatori PHP. Serve per ottenere il resto di una divisione e si presta a moltissimi utilizzi concreti.

Abbiamo visto che puoi usarlo per:

  • controllare se un numero è pari o dispari;
  • alternare elementi in una lista;
  • creare cicli ripetuti su array;
  • gestire blocchi, turni e raggruppamenti;
  • costruire logiche periodiche in modo semplice e leggibile.

Se impari a riconoscere i problemi che richiedono una logica “a ciclo” o “a resto”, il modulo diventerà uno dei tuoi operatori preferiti in PHP.

Approfondisci con risorse ufficiali

  • Manuale PHP – Operatori aritmetici: documentazione ufficiale sugli operatori numerici, incluso il modulo.
  • Manuale PHP – Tipi di dato: utile per capire come PHP gestisce interi e numeri in generale.
  • Manuale PHP – Controllo del flusso: per combinare il modulo con if, cicli e switch in modo efficace.
  • Manuale PHP – Arrays: fondamentale se usi il modulo per accessi ciclici agli array.

Se vuoi, nel prossimo tutorial possiamo approfondire un altro operatore molto utile e spesso frainteso, come l’operatore di coalescenza null ?? oppure l’operatore di spacchettamento in PHP.

SHARE