Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2639 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Probleme avec array_diff

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme avec array_diff

n°405754
samuelp
Posté le 23-05-2003 à 12:12:48  profilanswer
 

J'ai 2 tableaux, le premier contient :
 

Code :
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => -1
  6.             [1] => SYSFONCTION
  7.             [2] =>
  8.         )
  9.     [1] => Array
  10.         (
  11.             [0] => 1
  12.             [1] => ADMINISTRATEUR
  13.             [2] =>
  14.         )
  15.     [2] => Array
  16.         (
  17.             [0] => 2
  18.             [1] => ACCOUNTING DEPARTMENT
  19.             [2] =>
  20.         )
  21.     [3] => Array
  22.         (
  23.             [0] => 26
  24.             [1] => TOP MANAGEMENT
  25.             [2] =>
  26.         )
  27.     [4] => Array
  28.         (
  29.             [0] => 27
  30.             [1] => SOFTWARE DEVELOPMENT
  31.             [2] =>
  32.         )
  33.     [5] => Array
  34.         (
  35.             [0] => 28
  36.             [1] => TestFunction
  37.             [2] =>
  38.         )
  39. )

 
 
Dans l'autre :

Code :
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => 1
  6.             [1] => ADMINISTRATEUR
  7.             [2] =>
  8.         )
  9. )


 
 
Je lis la definition de array_diff
 array_diff() retourne un tableau qui contient toutes les valeurs du tableau array1  qui sont absentes de tous les autres arguments. Notez que les clés sont préservées.  
 
 
Maintenant je fais un $ARRAY = array_diff($TAB1,$TAB2) ;
 
Je m'attend au resultat :
 

Code :
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => -1
  6.             [1] => SYSFONCTION
  7.             [2] =>
  8.         )
  9.     [1] => Array
  10.         (
  11.             [0] => 2
  12.             [1] => ACCOUNTING DEPARTMENT
  13.             [2] =>
  14.         )
  15.     [2] => Array
  16.         (
  17.             [0] => 26
  18.             [1] => TOP MANAGEMENT
  19.             [2] =>
  20.         )
  21.     [3] => Array
  22.         (
  23.             [0] => 27
  24.             [1] => SOFTWARE DEVELOPMENT
  25.             [2] =>
  26.         )
  27.     [4] => Array
  28.         (
  29.             [0] => 28
  30.             [1] => TestFunction
  31.             [2] =>
  32.         )
  33. )
  34. [/cpp ]
  35. Mais j'ai
  36. [cpp]
  37. Array
  38. (
  39. )


 
 
En faisant le topic je me suis rendu compte que cela ne pouvait pas marcher car [1] est different de [0] mais pourquoi me donne t-il un tableau vide plutot que tout le tableau en entier ?
 
 
PS : Joce ça commence à m'enerver le fait d'inserer un smiley/code et de me voir revenir en haut du Textarea quand on est sous un navigateur Mozilla -like. Je sais que c possible de regler ce probleme, et c pas un troll


Message édité par samuelp le 23-05-2003 à 12:14:00
mood
Publicité
Posté le 23-05-2003 à 12:12:48  profilanswer
 

n°405765
dropsy
et bonne chance surtout...
Posté le 23-05-2003 à 12:21:29  profilanswer
 

la comparaison se fait au sens d'une chaine de caractère ;)
 

Note : Deux éléments sont considérés comme égaux si et seulement si (string) $elem1 === (string) $elem2. En clair : lorsque la représentation en chaîne de caractères est identique.

n°405767
samuelp
Posté le 23-05-2003 à 12:22:23  profilanswer
 

dropsy a écrit :

la comparaison se fait au sens d'une chaine de caractère ;)
 

Note : Deux éléments sont considérés comme égaux si et seulement si (string) $elem1 === (string) $elem2. En clair : lorsque la représentation en chaîne de caractères est identique.




Je sens bien que je vais devoir me taper ma propre fonction moi !

n°405818
__canard__
Posté le 23-05-2003 à 12:55:26  profilanswer
 

samuelp a écrit :


Je sens bien que je vais devoir me taper ma propre fonction moi !


 
mais pourquoi n'utilises tu pas la fonction   :??:  
 

Code :
  1. compare_myarrays($var1, $var2);


 
 
 :)

n°405828
simogeo
j'ai jamais tué de chats, ...
Posté le 23-05-2003 à 13:02:22  profilanswer
 

en fait si j'ai bien compris comment fonctionnait la fonction ( car je ne m'en suis jamais servi) et ce que tu voulais faire ....
tu peux t'en servir afin de ne faire qu'une boucle au lieu d'un boucle imbriquée, non  
 
 

Code :
  1. for($i=0; $i<(count($TAB)); $i++)
  2. {
  3. $result=array_diff($TAB1[$i],$TAB2[$i]) ;
  4. }


 
 [:spamafote]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°405925
samuelp
Posté le 23-05-2003 à 13:42:02  profilanswer
 

__canard__ a écrit :


 
mais pourquoi n'utilises tu pas la fonction   :??:  
 

Code :
  1. compare_myarrays($var1, $var2);


 
 
 :)  


 
ça fait deux fois, tu veux te foutre de ma gueule c'est ça ?

n°405928
samuelp
Posté le 23-05-2003 à 13:43:32  profilanswer
 

simogeo a écrit :

en fait si j'ai bien compris comment fonctionnait la fonction ( car je ne m'en suis jamais servi) et ce que tu voulais faire ....
tu peux t'en servir afin de ne faire qu'une boucle au lieu d'un boucle imbriquée, non  
 
 

Code :
  1. for($i=0; $i<(count($TAB)); $i++)
  2. {
  3. $result=array_diff($TAB1[$i],$TAB2[$i]) ;
  4. }


 
 [:spamafote]  


 
Bah non j'ai du faire hyper compliqué : Puisque les tableaux sont de tailles variables.
 
 Je me demande si ma fonction peut etre amelioree :
 

Code :
  1. function truncate_array_double_recursive($varArray1,$varArray2,$varIndex=0)
  2. {
  3. for ($counter=0;$counter<count($varArray2);$counter++)
  4. {
  5.  $arraybackup[$counter]=$varArray2[$counter][$varIndex] ;
  6. }
  7. $counter = 0 ;
  8. $array_backup = array() ;
  9. for ($counter_one=0;$counter_one<count($varArray1);$counter_one++)
  10. {
  11.  for ($counter_two=0;$counter_two<count($arraybackup);$counter_two++)
  12.  {
  13.   if (!(in_array($arraybackup[$counter_two],$varArray1[$counter_one])))
  14.   {
  15.    //echo "toto" ;
  16.    for ($counter_three=0;$counter_three<count($varArray1[$counter_one]);$counter_three++)
  17.    {
  18.     $array_backup[$counter][$counter_three]=$varArray1[$counter_one][$counter_three] ;
  19.    }
  20.    $counter ++;
  21.   }
  22.  }
  23. }
  24. return $array_backup ;
  25. }

n°406457
__canard__
Posté le 23-05-2003 à 18:15:58  profilanswer
 

samuelp a écrit :


 
ça fait deux fois, tu veux te foutre de ma gueule c'est ça ?


[:psywalk]

n°1655205
franckmass​art
Posté le 09-12-2007 à 12:16:27  profilanswer
 

Je crois que l'on peut simplifier comme ça
 
$j = 0;
foreach($p_TAB1 as $key_1){
 $v_flag = 0;
 foreach($p_TAB2 as $key_2){
  if($key_1[0] == $key2_2[0]) $v_flag = 1;
 }
 if($v_flag == 0){
  $p_data[$j][0] =$key_1[0];
  $p_data[$j][1] =$key_1[1];
  $j++;
 }
}


---------------
Oderint Dum Metuant

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Probleme avec array_diff

 

Sujets relatifs
probleme pour lire dans un fichier avec fread[PHP] header (problème résolut)
Problème d'architecture...probleme pour construction d'1 site en PHP
Probleme pour modifier une colonne dans une table Postgres[débutant PHP] probleme lors du passage de parametre
REMOTE_ADDR problemeProblème RowFilter / ADO.net / Vb.Net
gtk-1.2 : probleme dans une boucle gtk_events_pending[JS] probleme compatibilite avec Mozilla
Plus de sujets relatifs à : Probleme avec array_diff


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR