PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 28-01-2010 22:16:04

Yannick
Membre
Inscription : 22-09-2009
Messages : 42

Comparer 2 tableaux de longueur différente

Amis du PHP du soir bonsoir,
Je me suis amusé à comparer 2 tableaux - vraiment des fois je me dis que j'ai que ça à faire - et je me suis rendu compte
qu'il m'était impossible d'obtenir un résultat cohérent du fait que l'un des deux tableaux est plus long.
J'ai utilisé la fonction array_diff_assoc sur ce genre de truc

$array_1 = array(titre=>mr, prenom=>jean-paul, nom=> gauthier);
$array_2 = array(nom =>gauthier,prenom =>jean-paul);
$array_diff = array_diff_assoc($array_1, $array_2);

Résultat de la différence gauthier et non mr ...
Si le cœur vous en dit...
Merci!

Hors ligne

#2 29-01-2010 08:33:40

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Comparer 2 tableaux de longueur différente

On peut y aller sous forme d'algorithme pour régler ce problème, après pas difficile à coder.

var ArrayTmp de type Array
Pour toutes les valeurs de Array1 => valeur1
   Pour toutes les valeurs de Array2 => valeur2
      Si valeur1 = valeur2 Alors
        insérer valeur2 dans ArrayTmp
        supprimer valeur2 de Array2
        supprimer valeur1 de Array1
      FinSi
   FinPour
FinPour

En gros le but est de stocker dans un tableau les valeurs qui se ressemblent, il ne restera donc plus que ceux qui ne concordent pas. Mais on peut aussi faire l'inverse.

var ArrayDiff de type Array
Pour toutes les valeur de Array1 => valeur1
  var trouvé de type booléen <= faux
  Pour toutes les valeurs de Array2 => valeur2
    Si valeur1 = valeur2 Alors
      trouvé <= vrai
    FinSi
  FinPour
  Si trouvé = faux Alors
    ArrayDiff[] <= valeur1
  FinSi
FinPour

On se construit un tableau avec les valeurs qui ne sont pas retrouvées.

Bien évidemment dans mes deux méthodes il faut que Array1 soit plus grand que Array2.

Dernière modification par xTG (29-01-2010 08:34:15)

Hors ligne

Pied de page des forums