Tri d'un tableau qui se trouve dans une classe qui celle ci est appellée plusieur fois
Par karando, jeudi 22 février 2007 à 13:19 :: PHP - Classe :: #27 :: rss
La classe implemente un tableau avec des informations diverse on doit pouvoir faire un tri dans le tableau suivant des parametre initialiser. La classe va etre appeller par differente methode dans d'autre classe. Et va etre ensuite appeller par deux fois successivement afin de recuperer un tri de tableau dans un sens et un tri dans un autre sens. le probleme est l'appel de cette methode de tri.
Voici le probleme : On a dans la classe une methode Cfct_tri que l'on veut appeller pour faire un tri. pour eviter d'avoir trop de fonction dans la classe en private vu que ce n'est qu'un tri on voudrait mettre les fonction fct_compare et fct_comparedesc dans la methode Cfct_tri de la classe. Malheureusement on ne peut pas faire cela car si on appele deux fois la methode on aura un probleme de declaration. pour palier a cela on cree les deux methode Cfct_compare et Cfct_comparedesc dans la classe et on fait un usort avec le array($this,"Cfct_compare"); Exemple :
[PHP]
<?php
class test
{
private function Cfct_tri()
{
switch($this->methodetri)
{
case 1:
$this->Cfct_tri_titre("ASC");
break;
case 2:
$this->Cfct_tri_titre("DESC");
}
}
//on ne peut pas faire ca comme ca
/*
private function Cfct_tri_titre($val)
{
function fct_compare($a,$b)
{
return strcmp($a[5],$b[5]);
}
function fct_comparedesc($a,$b)
{
return (-1)*strcmp($a[5],$b[5]);
}
if ($val=="ASC")
usort($this->chaine_de_sortie,"fct_compare");
else
usort($this->chaine_de_sortie,"fct_comparedesc");
*/
}
//on le fait comme ca
private function Cfct_tri_titre($val)
{
if ($val=="ASC")
usort($this->chaine_de_sortie,array($this,"Cfct_compare"));
else
usort($this->chaine_de_sortie,array($this,"Cfct_comparedesc"));
}
private function Cfct_compare($a,$b)
{
return strcmp($a[5],$b[5]);
}
private function Cfct_comparedesc($a,$b)
{
return (-1)*strcmp($a[5],$b[5]);
}
}
?>
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.