2 boucles en php

Résolu
amine_marc Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   -  
Bertrand40 Messages postés 1196 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

3 réponses

coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
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
amine_marc Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   2
 
la deuxieme proposition
0
coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
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;
0
amine_marc Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   2
 
Oui c'est super, très bien, je te remercie bcp.
0
Bertrand40 Messages postés 1196 Date d'inscription   Statut Membre Dernière intervention   194
 
Bonsoir,

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

@+
0
amine_marc Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   2
 
le même pb, l'expression "Pas d'égalité" s'affiche +ieurs fois.
0
Bertrand40 Messages postés 1196 Date d'inscription   Statut Membre Dernière intervention   194
 
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
0
amine_marc Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   2
 
normalement je dois avoir "pas d'egalite" 3 fois et "egalite" 2 fois; c'est ce que je cherche...
0
Bertrand40 Messages postés 1196 Date d'inscription   Statut Membre Dernière intervention   194
 
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
@+
0
coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
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;
?>
0
amine_marc Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   2
 
oui c'est bien pour $j=5 et non pour $i=0: "egalite" n'est plus affiché!
0
coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
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;
0