Comparaison de deux arrays

Résolu/Fermé
wifsimster Messages postés 20 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 mai 2009 - 26 juin 2008 à 11:29
wifsimster Messages postés 20 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 mai 2009 - 26 juin 2008 à 12:02
Bonjour,
Voici mon problème je récupère deux arrays que je voudrais comparer :

// On récupert tous les lieux existant dans la base de données
$sql = 'SELECT nom FROM categories ';
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
while ($line = mysql_fetch_array($req, MYSQL_ASSOC))
{
	foreach ($line as $valeur)
	{
		$categories[] = $valeur;
	}
}

// On récupert ensuite les lieux rentrés dans l'agenda
$sql = 'SELECT lieu FROM agenda ';
$reque = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
while ($line = mysql_fetch_array($reque, MYSQL_ASSOC))
{
	foreach ($line as $valeur)
	{
		$lieux[] = $valeur;
	}
}

Seulement pas trop d'idée ce matin =/
A voir également:

2 réponses

macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
26 juin 2008 à 11:48
Bonjour.

En fait, ça dépend un peu de ce que tu veux faire...

Il y a la fonction array_diff(array1, array2), qui retourne un tableau avec les valeurs de array1 qui ne sont pas dans array2.
Au contraire, array_intersect(array1, array2) renvoie les valeurs de array1 qui sont aussi dans array2.

Sinon, il y a une solution "bidouille" :
Dans ta première boucle, tu en profites pour alimenter une chaîne de caractères :
$compare = "";
foreach ($line as $valeur)
{
$categories[] = $valeur;
$compare .= $valeur."|";
}

Et dans la deuxième boucle, tu regardes si $valeur est dans ta chaîne...
foreach ($line as $valeur)
{
$lieux[] = $valeur;
if (strpos($compare, $valeur."|") ) {
<ce que tu as à faire>
}
}
1
wifsimster Messages postés 20 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 mai 2009
26 juin 2008 à 12:02
Je viens d'adapter ta dernière méthode à mon problème et ça marche nikel du premier coup :p
Sauf que je fais mon traitement lors du else et non du if du strpos...
0