[PHP] Différence entre les valeurs de deux tableaux

Différence entre les valeurs de deux tableaux [PHP] - PHP - Programmation

Marsh Posté le 17-10-2007 à 22:22:10    

Plop !
 
Etant une pine en ce qui concerne la manipulation des tableaux, j'aurais besoin de votre aide :D  
 
J'aimerais comparer les valeurs de deux tableaux et extraire uniquement celles qui sont différentes dans un nouveau tableau.  
Pour être plus concret :
 
Mon premier tableau :
tableau1[0] = toto
tableau1[1] = zozo
tableau1[2] = jojo  
 
Mon deuxième tableau :
tableau2[0] = toto
tableau2[1] = zorglubator
tableau2[2] = zozo
tableau2[3] = jojo
 
Le tableau de sortie que j'aimerais :
intrus[0] = zorglubator
 
 
Autre exemple :  
 
Mon premier tableau :
tableau1[0] = toto
tableau1[1] = zozo
tableau1[2] = jojo  
tableau1[3] = popo  
 
Mon deuxième tableau :
tableau2[0] = toto
tableau2[1] = zorglubator
tableau2[2] = jojo
 
Le tableau de sortie que j'aimerais :
intrus[0] = zorglubator
intrus[1] = popo
intrus[2] = zozo
 
 
Je pense que c'est assez clair. Est-ce que je peux utiliser array_diff() pour arriver à mes fins ? (ai la flemme de faire du testing :whistle: )
 
Merchi.

Reply

Marsh Posté le 17-10-2007 à 22:22:10   

Reply

Marsh Posté le 18-10-2007 à 01:30:20    

vla le "testing" [:pingouino]


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 18-10-2007 à 09:03:59    

feignasse ...

Reply

Marsh Posté le 18-10-2007 à 13:10:57    

Rohhh mais qu'ils sont gentils. Ca va j'ai compris, vais faire ma fonction comme un grand. Je la posterai au cas où quelqu'un a besoin de la meme chose que moi (ça s'appelle l'entre-aide...)
 
A toute !

Reply

Marsh Posté le 18-10-2007 à 13:13:11    

Ouais et faire les choses dont on a besoin ca s'appelle travailler.

Reply

Marsh Posté le 18-10-2007 à 13:24:32    

euh on est censé avoir des remords? tu nous donne le nom de la fonction que tu pourrais utiliser, mais tu nous claque que t'a la flemme de tester? et on dois ce sentir coupable de pas te dire, attend attend je vais le faire à ta place... -_-
et bin

Reply

Marsh Posté le 18-10-2007 à 13:26:27    

Le pire c'est qu'il aurait eu le temps de tester ça 5 fois pendant le temps qu'il a prit pour écrire ce sujet .
 
Je comprends pas la  [:noxauror]

Reply

Marsh Posté le 18-10-2007 à 13:27:08    

mdr +1

Reply

Marsh Posté le 18-10-2007 à 18:12:56    

L'idée de base, ce n'était pas que vous testiez à ma place, mais c'était surtout de savoir si y avait une fonction préexistente qui pourrait me donner ce que je cherche.
Si je n'avais pas mis ma dernière phrase (entre parenthèses en plus...), vous n'auriez pas répondu comme ça. Bonjour la focalisation, faut vous détendre les gars.
 
Là je suis en train de chercher l'algo dont j'ai besoin, je ne vous demande rien il me semble. De toute façon après vos réactions ça ne me donne pas envie de le faire.
 
Bon vent.

Reply

Marsh Posté le 19-10-2007 à 06:34:39    

Si jamais, pour ceux à qui ça servirait :  
 

Code :
  1. <?php
  2. $idList[0] = "1";
  3. $idList[1] = "2";
  4. $idList[2] = "3";
  5. $idExtract[0] = "1";
  6. $idExtract[1] = "2";
  7. $idExtract[2] = "4";
  8. $k = 0;
  9. for($i = 0; $i < count($idExtract); $i++){
  10. for($j = 0; $j < count($idList); $j++){
  11.   if($idExtract[$i] == $idList[$j]){
  12.  $egal = "1";
  13. }
  14. }
  15. if(!isset($egal)){
  16.   $newID[$k] = $idExtract[$i];
  17.   $k++;
  18. }
  19. unset($egal);
  20. }
  21. // Testing
  22. if(!isset($newID)){
  23. $newID = "pas d'élément différent !";
  24. }
  25. echo "idExtract :<br />";
  26. print_r($idExtract);
  27. echo "<br /><br />idList :<br />";
  28. print_r($idList);
  29. echo "<br /><br />idNew :<br />";
  30. print_r($newID);
  31. ?>


 
ATTENTION: la différence peut uniquement être dans le tableau idExtract.

Message cité 1 fois
Message édité par cleanx le 19-10-2007 à 06:38:08
Reply

Marsh Posté le 19-10-2007 à 06:34:39   

Reply

Marsh Posté le 19-10-2007 à 09:57:52    

cleanx a écrit :

Si jamais, pour ceux à qui ça servirait :

Code :
  1. <?php...


ATTENTION: la différence peut uniquement être dans le tableau idExtract.


la même chose en une ligne, pour ceux à qui ça servirait et qui voudraient le faire proprement:

Code :
  1. $idList[0] = "1";
  2. $idList[1] = "2";
  3. $idList[2] = "3";
  4. $idExtract[0] = "1";
  5. $idExtract[1] = "2";
  6. $idExtract[2] = "4";
  7. print_r(array_values(array_diff($idExtract, array_intersect($idList,$idExtract)));

Message cité 1 fois
Message édité par anapajari le 19-10-2007 à 09:58:06
Reply

Marsh Posté le 19-10-2007 à 10:14:45    

anapajari a écrit :


la même chose en une ligne, pour ceux à qui ça servirait et qui voudraient le faire proprement:

Code :
  1. $idList[0] = "1";
  2. $idList[1] = "2";
  3. $idList[2] = "3";
  4. $idExtract[0] = "1";
  5. $idExtract[1] = "2";
  6. $idExtract[2] = "4";
  7. print_r(array_values(array_diff($idExtract, array_intersect($idList,$idExtract)));



 
 :whistle:  

Reply

Marsh Posté le 19-10-2007 à 11:15:30    

Bande d'enfoirés :o  
 
Il est très propre mon code d'abord :D

Reply

Marsh Posté le 19-10-2007 à 11:17:03    

hey oh moi j'ai rien dis :D

Reply

Marsh Posté le 19-10-2007 à 11:19:21    

T'as oublié une parenthèse de fermeture si jamais.  :whistle:
 

Code :
  1. print_r(array_values(array_diff($idExtract, array_intersect($idList,$idExtract))));


Message édité par cleanx le 19-10-2007 à 11:20:23
Reply

Marsh Posté le 19-10-2007 à 11:24:13    

Et puis ch'uis pas "nain génieur nain formaticien" (cf. profil anapajari) qui passe sa vie sur PHP moi, mais autodidacte. :kaola:  :o  :D

Message cité 2 fois
Message édité par cleanx le 19-10-2007 à 11:25:08
Reply

Marsh Posté le 19-10-2007 à 11:31:10    

chu pas nain génieur nain formaticien non plus ..
moi c'est le chez les nains génieurs multimédia que je suis :)

Reply

Marsh Posté le 19-10-2007 à 11:32:20    

cleanx a écrit :

Et puis ch'uis pas "nain génieur nain formaticien" (cf. profil anapajari) qui passe sa vie sur PHP moi, mais autodidacte. :kaola:  :o  :D


 
si tu commences a insulter tu vas te faire des ennemis :o


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 19-10-2007 à 11:32:58    

cleanx a écrit :

Bande d'enfoirés :o


T'es gentil mais on va rester poli [:w3c compliant]

cleanx a écrit :

Il est très propre mon code d'abord :D


Non [:spamafote]
En autre, Tu fais i*j itérations alors q'une grande partie d'entre elles est non nécessaire...
Un exemple, tableau1  = [1 ... 10000] et tableau2[1... 10000]
Bin à ta 1ere itération pour tester le 1, 9999 itérations de j inutiles.
Un break ne serait vraiment pas superflu.

 
cleanx a écrit :

Et puis ch'uis pas "nain génieur nain formaticien" (cf. profil anapajari) qui passe sa vie sur PHP moi, mais autodidacte. :kaola:  :o  :D


A bin alors t'as le droit ...

Message cité 1 fois
Message édité par anapajari le 19-10-2007 à 11:34:08
Reply

Marsh Posté le 19-10-2007 à 13:14:40    

anapajari a écrit :


T'es gentil mais on va rester poli [:w3c compliant]


 
On dirait que vous ne connaissez décidemment pas le second degré sur ce forum... Vais apprendre à m'abstenir.
 

anapajari a écrit :


Non [:spamafote]
En autre, Tu fais i*j itérations alors q'une grande partie d'entre elles est non nécessaire...  
Un exemple, tableau1  = [1 ... 10000] et tableau2[1... 10000]
Bin à ta 1ere itération pour tester le 1, 9999 itérations de j inutiles.  
Un break ne serait vraiment pas superflu.
 


 
Bah mes tableaux ne dépasseront jamais quelques dizaines de valeurs [:spamafote] . M'enfin je prends note de la recommandation. N'ayant jamais suivi de cours d'algo, faut pas m'en vouloir si l'optimisation n'est pas mon fort  :sweat:  .
 

anapajari a écrit :


A bin alors t'as le droit ...


 
En effet, c'est mon choix.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed