PHP débutant - Les Modulos

PHP débutant - Les Modulos

Modulo modulo ! C'est quoi ça ? Imaginer un tableau que vous aimeriez colorier avec une ligne sur 2 en rouge et l'autre en bleu.
Une fois c'est bleu et l'autre fois c'est rouge. Nous pourrions le dire d'une autre manière qui revient au même: si ce n'est pas bleu alors c'est rouge. Nous allons raisonner de la même manière avec les modulos.

Sommaire :

PHP débutant - Les Modulos

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';

?>