Bonjour,
J'avais déjà posté sur ce problème il y a plusieurs mois et je n'avais pas eu de solution. Depuis, j'ai installé Fedora Core 6 sur mon serveur de développement en espérant que la mise à jour arrangerait mon problème mais il n'en est rien. Voici donc mon problème :
J'ai une classe qui se résume ainsi :
Donc, lorsque j'arrive à ma fonction qui permet d'afficher mon tableau en ordre de date, je veux qu'il soit trié par heure puis par date pour arriver dans un ordre correct. Le problème, c'est que si j'appelle 2 fois de suite la fonction trier() dans une même fonction, je revoit un message qui dit que lineicmp() a déjà été déclarée. Il semble donc que la fonction lineicmp() reste déclarée au sein de la fonction afficherParDate() même si, logiquement, elle devrait disparaître à la fin de la fonction trier().
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 class MaClasse { private $c = array(); function __construct($info) { [...] } function afficherParDate() { $this->trier("heure"); $this->trier("date"); //Affichage... } function trier($colonne) { $GLOBALS["col"] = $colonne; function lineicmp() { //Compare une ligne du tableau selon les valeurs de la colonne spécifiée //dans $GLOBALS["col"] puis renvoie -1, 0 ou 1 } usort($this->c, "lineicmp"); } }
Je me demandais si il y a un moyen de "dé-déclarer" une fonction ou bien une autre façon d'arranger le problème. À noter que je ne peux par définir lineicmp() en dehors de trier() car usort() ne la trouverait pas. Il n'existe aucune autre fonction nommée lineicmp() dans mon code.
Partager