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.
