2 boucles en php

Résolu
amine_marc Messages postés 286 Statut Membre -  
Bertrand40 Messages postés 1344 Statut Membre -
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 3296 Statut Membre 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 286 Statut Membre 2
 
la deuxieme proposition
0
coeus Messages postés 3296 Statut Membre 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 286 Statut Membre 2
 
Oui c'est super, très bien, je te remercie bcp.
0
Bertrand40 Messages postés 1344 Statut Membre 194
 
Bonsoir,

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

@+
0
amine_marc Messages postés 286 Statut Membre 2
 
le même pb, l'expression "Pas d'égalité" s'affiche +ieurs fois.
0
Bertrand40 Messages postés 1344 Statut Membre 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 286 Statut Membre 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 1344 Statut Membre 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 3296 Statut Membre 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 286 Statut Membre 2
 
oui c'est bien pour $j=5 et non pour $i=0: "egalite" n'est plus affiché!
0
coeus Messages postés 3296 Statut Membre 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