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

Signaler
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
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

Messages postés
166
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
8 avril 2007
1
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
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
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)
Messages postés
166
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
8 avril 2007
1
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
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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!