Fonction callback et classe, 2! [Résolu]

Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
- - Dernière réponse : malalam
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
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 !
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
167
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
8 avril 2007
1
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 186 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_eXon
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
0
Merci
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)
Commenter la réponse de cs_Anthomicro
Messages postés
167
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
8 avril 2007
1
0
Merci
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
Commenter la réponse de cs_eXon
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
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!
Commenter la réponse de malalam