2 boucles en php

Résolu
Bonjour,

je sais pas comment faire pour exécuter le code suivant d'une manière exacte:

<?php
$tab1=array('a','3','z','5','f');
$tab2=array('r','d','3','t','5');
$i=0; $j=0;
for($compt=0; $compt < count($tab1); $compt++)
{
for($compt2=0; $compt2 < count($tab2); $compt2++)
{
if($tab1[$compt]==$tab2[$compt2]) {
echo "Egalité <br>";
$i++; }
else {
echo "Pas d'égalité <br>";
$j++;}
}
}
echo "<br> i= ".$i."<br> j= ".$j;
?>
Veuillez me dire où est le pb exactement;
Merci d'avance.

3 réponses

  1. Dans le fond, veux-tu comparer chaque valeur de $tab1 à son analogue de $tab2, ou savoir si chaque valeur de $tab1 se retrouve quelque part dans $tab2 ?
    1. la deuxieme proposition
    2. Ah !!! Alors :
      $tab1=array('a','3','z','5','f');
      $tab2=array('r','d','3','t','5');
      $i=0; $j=0;
      for($x=0; $x < count($tab1); $x++) {
      	if(in_array($tab1[$x], $tab2)) {
      		echo "Egalité<br>";
      		$i++;
      	} else {
      		echo "Pas d'égalité<br>";
      		$j++;
      	}
      }
      echo "<br> i= ".$i."<br> j= ".$j;
      
    3. Oui c'est super, très bien, je te remercie bcp.
  2. Bonsoir,

    C'est pas plutôt sizeof que tu veux utiliser plutôt que count ..? ;)

    @+
    1. le même pb, l'expression "Pas d'égalité" s'affiche +ieurs fois.
    2. Je viens d'essayer ce code :

      for($compt=0; $compt < sizeof($tab1); $compt++)
      {
      for($compt2=0; $compt2 < sizeof($tab2); $compt2++)
      {
      if($tab1[$compt]==$tab2[$compt2]){
      echo "Egalité <br>";
      $i++;
      }

      else {
      echo "Pas d'égalité <br>";
      $j++;
      }
      }
      }
      echo "<br> i= ".$i."<br> j= ".$j;

      Il me renvoie ça, ce qui est normal (concordance 3 et 5) :

      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Egalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Egalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité
      Pas d'égalité

      i= 2
      j= 23
    3. normalement je dois avoir "pas d'egalite" 3 fois et "egalite" 2 fois; c'est ce que je cherche...
    4. Avec ce que tu avais, non. Il devait y avoir nécessairement 25 réponses (5x5).
      Mais en fait j'ai même pas essayé de comprendre ce que tu cherchais à faire lol
      @+
  3. Salut !

    count() marchait bien, pas besoin de changer pour sizeof (quoique c'est une alternative aussi)...

    Est-ce que ceci répondrait à ta question :
    <?php
    	$tab1=array('a','3','z','5','f');
    	$tab2=array('r','d','3','t','5');
    	$i=0; $j=0;
    	for($x=0; $x < count($tab1); $x++) {
    		if($tab1[$x]==$tab2[$x]) {
    			echo "Egalité<br>";
    			$i++;
    		} else {
    			echo "Pas d'égalité<br>";
    			$j++;
    		}
    	}
    	echo "<br> i= ".$i."<br> j= ".$j;
    ?>
    
    1. oui c'est bien pour $j=5 et non pour $i=0: "egalite" n'est plus affiché!
    2. Pour arriver au même résultat, tu pourrais faire :
      $tab1=array('a','3','z','5','f');
      $tab2=array('r','d','3','t','5');
      
      $diff = array_diff_assoc($tab1, $tab2);
      $i = (count($tab1) - count($diff));
      $j = count($diff);
      
      echo "<br> i= ".$i."<br> j= ".$j;