Page 1 sur 2

Eliminer redondance entre 2 tableaux

Posté : 12 avr. 2010, 16:02
par Orion
Bonjour,
J'ai un problème qui requiert votre longue experience de programmeur.
Je souhaite enlever les redondances entre 2 tableaux j'ai donc pensé dans un premier temps à réunnir les 2 tableaux (array_combine) et à utiliser la fonction array_unique() mais la fonction array_combine ne permet la fusion que de deux tableaux de même taille, ce qui n'est pas mon cas.
J'ai essayé autre chose sans succes:

             if(file_exists($file)) {                              

			$lignes= file ($file); 
			foreach($lignes as $ligne) {  
				
                                   if(file_exists($files)) {                              

						$line= file ($files); 
						foreach($line as $lin) {  

                                                      	if($ligne!==$lin){
									echo "$lin";


Voilà il n'y a pas tout le code mais le principal, le problème est que cela ne fonctionne pas du tout car la comparaison se fait ligne par ligne donc même les redondances apparaisent, ainsi que la même ligne répétée autant de fois qu'il ya de ligne dans un autre fichier.
Bref j'aimerai savoir il existe des fonctions permettant de fisionner des tableaux de tailles différentes.
Et si possible d'éliminer les rédondances lorsque celles ci font plus de 2 lignes par exemple.
Voilà j'espere m'être exprimé le plus clairement possible
Merci d'avance pour votre aide
Cordialement
Orion

Re: Eliminer redondance entre 2 tableaux

Posté : 12 avr. 2010, 16:05
par stealth35
tu veux faire quoi enfaites exactement ? y'a quoi dans t'es fichiers ?

Re: Eliminer redondance entre 2 tableaux

Posté : 12 avr. 2010, 16:06
par Orion
Du texte en ligne, et donc en comparant ces 2 fichiers éliminer toutes les lignes qui sont similaires

Re: Eliminer redondance entre 2 tableaux

Posté : 12 avr. 2010, 16:09
par stealth35
juste 2 fichiers ?

Re: Eliminer redondance entre 2 tableaux

Posté : 12 avr. 2010, 16:10
par Orion
Oui

Re: Eliminer redondance entre 2 tableaux

Posté : 12 avr. 2010, 16:10
par stealth35
$out = array_intersect(file($file1), file($file2));

Re: Eliminer redondance entre 2 tableaux

Posté : 12 avr. 2010, 16:14
par Orion
Cette fonction array_intersect n'est pas cessé renvoyer justement les éléments identiques que l'on retrouve dans les 2 tableaux?

Re: Eliminer redondance entre 2 tableaux

Posté : 12 avr. 2010, 16:16
par stealth35
diff alors :wink:
$out = array_diff(file($file1), file($file2));

Re: Eliminer redondance entre 2 tableaux

Posté : 12 avr. 2010, 16:26
par Orion
Alors cette fonction là ne renvoie que les éléments du tableau 1 qui ne sont pas dans le tableau 2 mais pas les éléments du tableau 2 qui ne sont pas dans le premier.
En effectuant les 2 fonctions c'est peut être possible mais n'existe t-il pas une fonction permettan de faire les 2 à la fois.
$out = array_diff(file($file1), file($file2));
$put = array_diff(file($file2), file($file1));
$output=$out.$put;

Re: Eliminer redondance entre 2 tableaux

Posté : 12 avr. 2010, 16:27
par macgawel
diff ne renvoit que ce qui est dans $file1 et pas dans $file2. Il faut encore trouver qe qui est dans $file2 et pas dans $file1...
:non:

Par contre, en cherchant un peu on trouve ça qui a l'air de correspondre.
Il faut toujours lire les commentaires de php.net :wink:

Re: Eliminer redondance entre 2 tableaux

Posté : 12 avr. 2010, 16:31
par stealth35
c'est pourtant explicite dans la doc
array_diff() compare le tableau array1 avec le tableau array2 et retourne la différence.

y'a pas de truc dans 1 et de truc dans 2, une différence c'est une différence peu importe l'ordre

Re: Eliminer redondance entre 2 tableaux

Posté : 12 avr. 2010, 16:33
par albat
une différence c'est une différence peu importe l'ordre
Ah non ! :non:

Re: Eliminer redondance entre 2 tableaux

Posté : 12 avr. 2010, 16:34
par Orion
L'exemple semble montrer le contraire

Re: Eliminer redondance entre 2 tableaux

Posté : 12 avr. 2010, 16:35
par stealth35
une différence c'est une différence peu importe l'ordre
Ah non ! :non:
oui j'ai dis une connerie :priere: , (j'etais rester sur mon intersect)

Re: Eliminer redondance entre 2 tableaux

Posté : 12 avr. 2010, 16:38
par stealth35
sinon tu fusionnes et tu dé-doublonnes
$out = array_unique(array_merge(file($file1), file($file2)));