Fonction callback et classe, 2!

Résolu
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 25 janv. 2005 à 13:31
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 26 janv. 2005 à 05:54
Salut,









bon finalement, je ne m'en sors toujours pas (voir mon precedent fil).





Voici la ligne :





$tabtmp = explode("//", file_get_contents($this -> fichier));


$tabshout = array ("pseudo"=>array_filter($tabtmp,
call_user_func(array($this,'getPseudo'))),
"texte"=>array_filter($tabtmp,
call_user_func(array($this,'getTexte'))));





et les fonctions :





function getPseudo ($tab) {


return array_keys($tab)%2==1;


}





function getTexte ($tab) {


return array_keys($tab)%2==0;


}





Sachant que tout ceci est dans une classe (et que la ligne problematique est dans une autre fonction membre de cette classe).





Et voici les erreurs generees :





Warning: array_keys() [[function.array-keys function.array-keys]]: The first argument should
be an array in
/export/www/servers/www.printeria.de/htdocs/test/test/shoutbox.cls.php on
line 24





Warning: array_keys() [[function.array-keys function.array-keys]]: The first argument should
be an array in
/export/www/servers/www.printeria.de/htdocs/test/test/shoutbox.cls.php on
line 24





Warning: array_keys() [[function.array-keys function.array-keys]]: The first argument should
be an array in
/export/www/servers/www.printeria.de/htdocs/test/test/shoutbox.cls.php on
line 24





Warning: array_keys() [[function.array-keys function.array-keys]]: The first argument should
be an array in
/export/www/servers/www.printeria.de/htdocs/test/test/shoutbox.cls.php on
line 28





Warning: array_keys() [[function.array-keys function.array-keys]]: The first argument should
be an array in
/export/www/servers/www.printeria.de/htdocs/test/test/shoutbox.cls.php on
line 28





Warning: array_keys() [[function.array-keys function.array-keys]]: The first argument should
be an array in
/export/www/servers/www.printeria.de/htdocs/test/test/shoutbox.cls.php on
line 28








Or, a moins que je ne sois devenu debile, un explode() renvoie bien un
tableau de chaines :-( Et la fonction callback de array_filter() doit
se servir du tableau passe en 1er argument...a savoir le resultat de
mon explode().





Alors je ne sais pas.





Merci aux bonnes ames qui essayeront de m'aider !

4 réponses

cs_eXon Messages postés 166 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 8 avril 2007 1
25 janv. 2005 à 18:28
Ton erreur est là: call_user_func(array($this,'getPseudo')). Tu donne aucun argument à ta fonction. Il faudrait tu change par
call_user_func(array($this,'getPseudo'),$tabtmp).

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

eXon
http://www.lookstrike.com
3
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
25 janv. 2005 à 18:44
Salut ;-)



Lorsque tu appelles ta fonction array_keys il faut que tu donnes une variable de type tableau dans le premier argument.



Exemple :



array_keys($tableau);



Dans ton cas $tab ne doit pas exister ou n'est pas un tableau.



a ++

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'entraide informatique (14 catégories)
0
cs_eXon Messages postés 166 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 8 avril 2007 1
26 janv. 2005 à 04:05
C'est suposé toujours être un tableau c'est juste qu'il manque un
paramètre à l'utilisation de call_user_func. Il serait suposé appelé
tabtmp qui est toujours un tableau,

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

eXon
http://www.lookstrike.com
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 janv. 2005 à 05:54
Ok :-)

j'essaye tout a l'heure, mais a priori ta reponse me plait!

Bon de toutes facons, j'ai tout change parce que l'algo ne fonctionnait pas, lol; mais merci pour les reponses! J'avais compris dans la doc que array-filter() allait utiliser le 1er argument qui lui est passe (le tableau $tabtmp) pour lancer son 2d argument, a savoir la fonction callback. Donc j'avais cru comprendre que $tabtmp serait bien passe en parametre a ma fonction callback.

J'essaye tout a l'heure, merci, bonne journee!
0
Rejoignez-nous