Vous êtes ici Tutoriel > Les Modulos

 
 

PHP - Les Modulos

Tutoriel écrit par KOogar
Écrit le 23 fev 2007

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 - 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'operateur ternaire
- 1 est le pas du modulo. Si vous voulez un pas de 2, cad 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'ecrira:
.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 % is 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éménts
pour obtenir un syncronysation 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';

?>


© Copyright: Les tutoriels sont exclusifs et sont la propriétés des auteurs.
    Reproduction interdite.