Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
je crée un tableau issu d'un fichier csv grâce à la fonction fgetscsv.
Je veux ensuite trier ce tableau sur les clés 6 et 7 grâce à la fonction php usort.
Il faut pour cela créer une fonction callback de tri qui renvoie 0, 1 ou 2.
Comment dois-je appeler cette fonction de tri dans le usort, sachant que même si elle est dans la même classe il ne la trouve pas ?
J'ai toujours erreur de tri comme message,
ainsi que
Warning: usort() [function.usort]: Invalid comparison function. in E:\wamp\phenix\www\mtm\trunk\application\controllers\AffichageController.php on line 202
J'en déduis qu'il ne trouve pas la fonction compare1, mais je ne sais pas comment lui dire que cette fonction se trouve dans la même classe (self::compare() ne marche pas non plus)
Même en mettant comme nique instruction "return 1;" dans la fonction compare1, j'ai ces mêmes messages d'erreur.
Exemple
class AffichageController extends Zend_Controller_Action
{
function compare1($a, $b)
{
if(strcmp($a[6], $b[6])==0)
return compare2($a, $b);
return(strcmp($a[6], $b[6]);
}
function compare2($a, $b)
{
return(strcmp($a[7], $b[7]);
}
function importerFichierAction()
{
......
$ligneFichier = array();
while (($dataLigne = fgetcsv($handle, 1000, ";")) !== FALSE)
{
array_push($ligneFichier, $dataLigne);
}
if(usort($ligneFichier, "compare1")===false)
{
$this->view->message = "Erreur de tri");
}
.........
}
Hors ligne
remplace
function compare1($a, $b)
par
private function compare1($a, $b)
Hors ligne
Désolé superloulou77, ça ne change rien
Hors ligne
Dans les commentaires de la doc :
http://fr.php.net/manual/fr/function.usort.php#64034
usort($arr_to_sort, array($this, 'nom_methode'));
Hors ligne
Merci beaucoup, ça marche beaucoup mieux comme ça
Hors ligne