Comparaison de deux arrays

Résolu
wifsimster Messages postés 20 Statut Membre -  
wifsimster Messages postés 20 Statut Membre -
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 =/
Configuration: Windows XP
Firefox 3.0

2 réponses

  1. macgawel Messages postés 676 Statut Membre 89
     
    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
  2. wifsimster Messages postés 20 Statut Membre
     
    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