Modulo simple
Voici pour commencer un modulo simple qui va placer une fois sur 2 la couleur #fff (blanc) et une fois sur 2 la couleur #000 (noir)
.01 .02
| |
<?php $bgcolor = ($i++ & 1) ? '#fff' : '#000'; ?>
|
Pour mieux comprendre ce qui se passe, regardons d'abord les composantes:
-
$i est la variable de compteur. Elle doit être initialisée à 0 avant: $i=0;
-
? est
lâ??opérateur ternaire
-
1 est le pas du modulo. Si vous voulez un pas de 2, c'est à dire afficher une couleur différente toute les 2 fois, vous écrirez le modulo comme ceci:
.01 .02
| |
<?php $bgcolor = ($i++ & 2) ? '#fff' : '#000'; ?>
|
Modulo avec plusieurs éléments
Jusqu'à présent nous avons vu un modulo sur 2 éléments (#fff et #000, faisons juste un petit détour et voyons comment ajouter un nombre d'éléments superieur a 2. Nous aimons les couleurs !! Alors mettons 4 couleurs:
.01 .02
| |
<?php $colors = array('black','green','blue','yellow'); ?>
|
Le modulo sâ??écrira:
.01 .02
| |
<?php $bgcolor = $colors[$i++ % 4]; ?>
|
Ce qui rend le modulo plus flexible qu'avec le séparateur & pour un ajout d'éléments. Souvenez vous que % est un opérateur de modulo à utiliser dés que le nombre d'éléments est supérieur à 2.
Exemples de modulo
Voici maintenant un exemple concret de l'utilisation d'un modulo. Dans l'exemple j'ai pris les données d'une table MySQL histoire de faire une boucle, mais j'aurais pu prendre les données d'un tableau ou d'un fichier texte.
.01 .02 .03 .04 .05 .06 .07 .08 .09 .10 .11 .12 .13 .14
| |
<?php
// initialise $i à 0
$i = 0;
while($row = mysql_fetch_row($resultat)) {
$bgcolor = ($i++ & 1) ? '#fff' : '#000';
echo '<tr bgcolor='.$bgcolor.'>';
echo '<td>'.$row['nom_champ'].'</td></tr>';
}
?>
|
Prenons encore un peu de temps et faisons un test dans une boucle mais avec 6 éléments. Avant comme astuce, nous allons compter le nombre dâ??éléments pour obtenir une synchronisation parfaite du déroulement du script.
.01 .02 .03 .04 .05 .06 .07 .08 .09 .10 .11 .12 .13 .14 .15
| |
<?php
$couleurs = array('black','green','white','yellow','red','purple');
$nbr_couleurs = count($couleurs);
$i=0;
for ($j=0; $j <= 30; $j++) {
$bgcolor = $couleurs[$i++ % $nbr_couleurs];
echo ''.$bgcolor.' <br />';
}
?>
|
Raisonner modulo
Pour comprendre les modulos et alléger l'écriture de vos scripts php, raisonner comme pour les tests conditionnels
if-else, regarder le test plus bas, il a son équivalence en modulo !!
Test conditionnel classique: .01 .02 .03 .04 .05 .06 .07 .08 .09 .10 .11 .12 .13 .14
| |
<?php
// test conditionnel classique
if($activite == 'tennis')
{
$var = 'mon activite sportive est:';
}
else
{
$var = 'pas du judo';
}
?>
|
L'équivalence d'un test classique mais en MODULO:.01 .02 .03 .04 .05 .06
| |
<?php
$var = ($activite == 'tennis') ? 'mon activite sportive est:' : 'pas du judo';
?>
|