Bonjour,
Voilà, j'essaye de me faire une petite fonction de tri récursive prenant en parametre un tableau (a trié) et le nom de la colonne à comparer pour le tri...
imaginons l'exemple suivant :
Vous allez me dire que j'aurais du faire le tri dans ma requette SQL, mais c'est un peu plus compliqué que ca en réalité car j'ommet ici l'ajout de certains champs dans $res[] qui sont renseigné a ***traitement sup***
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 $tab_perti = array(); while($res[] = mysql_fetch_array($req)); ***traitement sup*** function tri_recursif_de_tableau($tab, $colonne) { $i = 0; while($i < (count($tab)-1)) // tant qu'on a pas parcouru tout le tableau { if($tab[$i][$colonne] < $tab[$i+1][$colonne]) // si les valeurs ne sont pas dans l'ordre... { // inversement de valeur echo 'inversement des valeurs : ('.$tab[$i][$colonne].') et ('.$tab[$i+1][$colonne].')<br>'; $tmp_tab = $tab[$i]; $tab[$i] = $tab[$i+1]; $tab[$i+1] = $tmp_tab; // puis on re-execute la fonction sur le tableau nouvellement trié return tri_recursif_de_tableau($tab, $colonne); // du coup, on interompt le traitement de la fonction, pouisque c'est la fonction (recursivement) appelé qui va finir le travail } $i++; } return $tab; // si on sort du while, c qu'aucune inversion de valeur n'a été faite, et que le tri est donc fini... } $tab_perti = tri_recursif_de_tableau($tab_perti, 'pertinence');
seulement voila, ma fonction me sort du paté et j'arrive vraiment pas à trouver mon erreur...
dans mes test, je travail avec un tableau dont les valeurs de la colonne sur laquelle je tri sont (dans l'ordre) 0-2-2.
Or, je devrait obtenir avec ce tri les valeurs 2-2-0...
et manque de bol, tout ce que j'obtient, c'est 2-blanc-0-2, et l'execution me donne :
Si quelqun a une idée, je suis preneur, parce que j'ai beau suivre mon algo a la main, j'ai pas trouvé l'erreur :/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 inversement des valeurs : (0) et (2) inversement des valeurs : () et (2) inversement des valeurs : (0) et (2) inversement des valeurs : () et (2)
Merci d'avance.
Partager