MarvinLeRouge Posté 30 Mai 2005 Posté 30 Mai 2005 Salut, Je cherche comment passer simplement les paramètres d'appel d'une fonction A à une fonction B, en les ajoutant à la fin, sachant que le nombre de paramètres de la fonction A est variable. function a (){ b ("abc"); // Comment rajouter tous les paramètres d'appel de a (quel que soit leur nombre) après "abc"}
Country Posté 30 Mai 2005 Posté 30 Mai 2005 Salut, Tu peut utiliser func_get_args() qui te renvera un tableau contenant tous les arguments de la fonction. Exemple : <?phpfunction a() { $args=func_get_args(); b("abc",$args);}function b($a,$b) { print_r($b);}a('arg1','arg2');?>
MarvinLeRouge Posté 30 Mai 2005 Auteur Posté 30 Mai 2005 En fait, ce que je voudrais, ce n'est pas un paramètre tableau, mais bien tous les paramètres de la fonction a, séparément les uns des autres.
Country Posté 30 Mai 2005 Posté 30 Mai 2005 Bin c'est pareil, dans le tableau qui t'es renvoyé tu as les paramètres, il t'es ensuite très facile de tous les récupérer.
Anonymus Posté 30 Mai 2005 Posté 30 Mai 2005 En fait, il faut bien comprendre que pour une fonction, le nombre de paramètres est aussi important que le nom de la fonction : foo($a,$ n'a rien à voir avec foo($a,$b,$c); Si tu ne connais pas le nombre d'arguments à passer à la fonction, le plus simple est de passer un tableau, avec le nombre d'arguments dans le tableau. Tu peux aussi passer ces différentes variables dans la variable $GLOBALS. Mais peut etre aussi est ce une fonction spécifique, qui aurait besoin d'être récursive
MarvinLeRouge Posté 31 Mai 2005 Auteur Posté 31 Mai 2005 Le nombre déclaré de paramètres dans l'en-tête de la fonction est le nombre mininmal de paramètres admissible (ici 1). Et cette fonction peut avoir 1, 2 ou 3 paramètres. Le tableau en question n'existe donc pas obligatoirement. Je préfère la méthode "tous les paramètres en liste" car il permet de traiter directement un bloc de données, sans avoir à le décomposer. La solution dont vous parlez est plus simple par certains aspects, et celles que je recherche par d'autres : c'est pourquoi je voudrais savoir comment effectuer ceci, afin de pouvoir faire un choix judicieux.
Anonymus Posté 31 Mai 2005 Posté 31 Mai 2005 Il te faut donc une fonction dynamique, auto-modifiante, qui change en fonction de tes besoins (un peu comme les virus ) C'est pas simple à faire, c'est pourquoi je te souhaite... "bon courage" :lol ou alors il faudrait que l'on en sache un peu plus sur cette fonction, notamment ce qu'elle est sensée faire.
MarvinLeRouge Posté 31 Mai 2005 Auteur Posté 31 Mai 2005 La fonction appelante se nomme prepareArticles, et prend en paramètre un tableau de données, et un certain nombre de paramètres indiquant le contexte (nombre et contenu variable suivant contexte). La fonction appelée se nomme prepareArticle (sans s), prend en paramètre un tableau de données (qui contient une ligne du précédent tableau), et les paramètres indiquant le contexte.
Boo2M0rs0 Posté 31 Mai 2005 Posté 31 Mai 2005 Bonjour, Si j'ai bien compris , tu appèle une première fonction avec un nombre variable de paramètres et cette fonction appèle elle-même une fonction avec un nombre variable de paramètres mais en en rajoutant au début. Si c'est ça, tu peut utiliser call_user_func_array() qui appèle une fonction avec le nombre de paramètres voulus : <?phpfunction a(){ $n_args = func_num_args(); //on récupère le nombre de paramètres $param = array("abc"); //notre tableau de paramètres que l'on va envoyer, on rajouter abc en plus (au début) for($i = 0; $i<$n_args; $i++) { $param[] = func_get_arg($i); //on rajoute à la suite de la liste les paramètres de cette fonction } call_user_func_array('b', $param); //on appèle la fonction b}?>
MarvinLeRouge Posté 31 Mai 2005 Auteur Posté 31 Mai 2005 Merci beaucoup, c'est pile poil ce dont j'avais besoin. J'ai cherché s'il existait une fonction permettant de coller directement un tableau à la fin d'un autre, mais apparemment ce n'est pas le cas (array_merge et l'opérateur + fonctionne étrangement lorsque le premier tableau fourni n'a qu'un élément). J'ai donc créé ma fonction array_append.
Anonymus Posté 31 Mai 2005 Posté 31 Mai 2005 array_merge sert à fusionner 2 tableaux, je ne vois pas ce que tu veux dire d'autre, en disant : 'coller un tableau à la fin d'un autre'
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant