[résolu]boucle de classement selon valeur tableau

boucle de classement selon valeur tableau [résolu] - PHP - Programmation

Marsh Posté le 10-10-2008 à 10:49:25    

Salut,  :hello:
 
J'ai un petit problème dans une boucle qui me compare les valeurs d'un tableau:
Si certaines valeurs sont pareil elle me stock les id dans un tableau 2d.
 

Code :
  1. $compteur1 = '0' ;
  2. $compteur2 = '1' ;
  3. $compteur3 = '0' ;
  4. $compteur4 = '0' ;
  5. for ($i=0; $i<count($array_id ); $i++) {
  6. if ($array_1[$compteur1] == $array_1[$compteur2] && $array_2[$compteur1] == $array_2[$compteur2]  && $array_3[$compteur1] == $array_3[$compteur2]) {
  7.   $array_regroup[$compteur3][$compteur4] = $array_id[$compteur1];
  8.   $compteur1 = $compteur1 + 1 ;
  9.   $compteur2 = $compteur2 + 1 ;
  10.   $compteur4 = $compteur4 + 1 ;
  11. }
  12. else {
  13.  $array_regroup[$compteur3][$compteur4] = $array_id[$compteur1];
  14.  $compteur1 = $compteur1 + 1 ;
  15.  $compteur2 = $compteur2 + 1 ;
  16.  $compteur3 = $compteur3 + 1 ;
  17. }
  18. }


 
Ce code m'affiche:

Code :
  1. 0 :
  2.       0 = 1211
  3. 1 :
  4.       0 = 1281
  5.       1 = 1179
  6. 2 :
  7.       1 = 1268
  8.       2 = 1257
  9.       3 = 1203
  10. 3 :
  11.       3 = 1222
  12.       4 = 1260
  13. 4 :
  14.       4 = 1223
  15.       5 = 1254
  16. 5 :
  17.       5 = 1151
  18. 6 :
  19.       5 = 1297
  20. 7 :
  21.       5 = 1214
  22.       6 = 1314
  23.       7 = 1140
  24.       8 = 1148
  25. 8 :
  26.       8 = 1256


Le classement est bon.
 
J'ai essayé pas mal de truc mais pas moyen de réinitialiser le compteur4 sans que certains id disparaissent ou que ça me change le classement.
 
 
Voila merci de votre aide.  [:moustik42]


Message édité par stefaninho le 10-10-2008 à 12:08:13

---------------
Et vous, quel est votre Final Fantasy préféré ?  
Reply

Marsh Posté le 10-10-2008 à 10:49:25   

Reply

Marsh Posté le 10-10-2008 à 11:08:12    

j'ai un peu de mal a voir ce que tu fais , masi un truc du genre

Code :
  1. $array_regroup=array();
  2. foreach ($i=0; $i<count($array_id ); $i++)
  3. {
  4.  if(isset($array_regroup[$array_id[$i]))
  5.     $array_regroup[$array_id[$i][] = $array_1[$i];
  6.  else
  7.     $array_regroup[$array_id[$i]  = array($array_1[$i]);
  8.  
  9. }


ne corrrespondrait il pas a la demande ?

 

$pwet[]='prout' ajoute prout au bout du tableau pwet


Message édité par flo850 le 10-10-2008 à 11:08:50

---------------

Reply

Marsh Posté le 10-10-2008 à 11:42:27    

J'ai pas vraiment compris ton code  :pt1cable:  
Pour $array_regroup[$array_id[$i][] t'aurais pas oublié un crochet?
 
Sinon tu m'a fait pensé à faire:  

Code :
  1. for ($i=0; $i<count($array_id ); $i++) {
  2. if ($array_1[$compteur1] == $array_1[$compteur2] && $array_2[$compteur1] == $array_2[$compteur2]  && $array_3[$compteur1] == $array_3[$compteur2]) {
  3.    $array_regroup[$compteur3][$compteur4] = $array_id[$compteur1];
  4.    $compteur1 = $compteur1 + 1 ;
  5.    $compteur2 = $compteur2 + 1 ;
  6.    $compteur4 = $compteur4 + 1 ;
  7. }
  8. else {
  9.   $array_regroup[$compteur3][] = $array_id[$compteur1];
  10.   $compteur1 = $compteur1 + 1 ;
  11.   $compteur2 = $compteur2 + 1 ;
  12.   $compteur3 = $compteur3 + 1 ;
  13. }
  14. }


Et dans ce cas le code m'affiche:
 

Code :
  1. 0 :
  2.       0 = 1211
  3. 1 :
  4.       0 = 1281
  5.       1 = 1179
  6. 2 :
  7.       1 = 1268
  8.       2 = 1257
  9.       3 = 1203
  10. 3 :
  11.       3 = 1222
  12.       4 = 1260
  13. 4 :
  14.       4 = 1223
  15.       5 = 1254
  16. 5 :
  17.       0 = 1151
  18. 6 :
  19.       0 = 1297
  20. 7 :
  21.       5 = 1214
  22.       6 = 1314
  23.       7 = 1140
  24.       8 = 1148
  25. 8 :
  26.       0 = 1256


 
Ce qui résout une partie du problème
 
Mais en fait je veux obtenir ça:
 

Code :
  1. 0 :
  2.        0 = 1211
  3. 1 :
  4.        0 = 1281
  5. .       1 = 1179
  6. 2 :
  7.        0 = 1268
  8.        1 = 1257
  9.        2 = 1203
  10. 3 :
  11.        0 = 1222
  12.        1 = 1260
  13. 4 :
  14.        0 = 1223
  15.        1 = 1254
  16. 5 :
  17.        0 = 1151
  18. 6 :
  19.       0 = 1297
  20. 7 :
  21.        0 = 1214
  22.        1 = 1314
  23.        2 = 1140
  24.        3 = 1148
  25. 8 :
  26.        0 = 1256


 
 :??:  
 


---------------
Et vous, quel est votre Final Fantasy préféré ?  
Reply

Marsh Posté le 10-10-2008 à 12:07:45    

:) C'est bon ça marche il fallait rajouter:

Code :
  1. if (!isset($array_regroup[$compteur3][0])){
  2.    $compteur4 = 0 ;
  3.   }


 
après le premier if.
 
Merci de ton aide tu m'as mis sur la bonne piste.  :jap:


---------------
Et vous, quel est votre Final Fantasy préféré ?  
Reply

Sujets relatifs:

Leave a Replay

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