Aller au contenu

Passage de paramètres


MarvinLeRouge

Sujets conseillés

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"
}

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Tu peut utiliser func_get_args() qui te renvera un tableau contenant tous les arguments de la fonction.

Exemple :

<?php
function a() {
$args=func_get_args();
b("abc",$args);
}

function b($a,$b) {
print_r($b);
}

a('arg1','arg2');
?>

Lien vers le commentaire
Partager sur d’autres sites

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,$B) 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 ;)

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Il te faut donc une fonction dynamique, auto-modifiante, qui change en fonction de tes besoins ;) (un peu comme les virus :lol: )

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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 :

<?php
function 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
}
?>

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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' :(

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...