Paramètres venant d'un tableau

9 réponses
Avatar
Y a Personne
Je voudrais exécuter une fonction dont le nombre de paramètre est variable.

Ses paramètres sont dans un tableau et là ca coince


$Params = array("pomme", "poire", "abricot");


maFonction()
{

}

comment exécuter la fonction "maFonction" avec les 3 valeurs en paramètres.


Merci de votre aide

9 réponses

Avatar
Fredchou
Le 24/06/2012 16:12, Y a Personne a écrit :
Je voudrais exécuter une fonction dont le nombre de paramètre est variable.

Ses paramètres sont dans un tableau et là ca coince


$Params = array("pomme", "poire", "abricot");


maFonction()
{

}

comment exécuter la fonction "maFonction" avec les 3 valeurs en paramètres.


Merci de votre aide



Je ne comprends pas très bien ton problème...

Souhaites-tu faire : maFonction($Params) ?
Ou bien : maFonction("pomme", "poire", "abricot") ?

S'il s'agit de la 2° proposition, va voir dans l'aide PHP :

http://www.php.net/manual/fr/functions.arguments.php#functions.variable-arg-list

--
Fredchou
mailto:
Avatar
Y a Personne
Le 24/06/2012 17:43, Fredchou a écrit :
Le 24/06/2012 16:12, Y a Personne a écrit :
Je voudrais exécuter une fonction dont le nombre de paramètre est
variable.

Ses paramètres sont dans un tableau et là ca coince


$Params = array("pomme", "poire", "abricot");


maFonction()
{

}

comment exécuter la fonction "maFonction" avec les 3 valeurs en
paramètres.


Merci de votre aide



Je ne comprends pas très bien ton problème...

Souhaites-tu faire : maFonction($Params) ?
Ou bien : maFonction("pomme", "poire", "abricot") ?

S'il s'agit de la 2° proposition, va voir dans l'aide PHP :

http://www.php.net/manual/fr/functions.arguments.php#functions.variable-arg-list






me suis sans doute mal exprimé.

La fonction maFonction() n'a pas de paramètre. si je lui en passe ok,
j'arrive à les récupérer (même si le nombre est variable) car je sais
combien de paramètre je lui passe et que les variable sont en dur. ex :
maFonction($var1, $var2);

mais dans le cas d'un array qui comprend x données (qui peut changer à
chaque fois).

comment je peux mettre dans la fonction maFonction() chaque paramètre ?

pour qu'au final j'ai par ex :

maFonction(array[0], array[1]);
ou
maFonction(array[0], array[1], array[2]);

merci de votre aide
Avatar
Fredchou
Le 24/06/2012 17:54, Y a Personne a écrit :
me suis sans doute mal exprimé.

La fonction maFonction() n'a pas de paramètre. si je lui en passe ok,
j'arrive à les récupérer (même si le nombre est variable) car je sais
combien de paramètre je lui passe et que les variable sont en dur. ex :
maFonction($var1, $var2);

mais dans le cas d'un array qui comprend x données (qui peut changer à
chaque fois).

comment je peux mettre dans la fonction maFonction() chaque paramètre ?

pour qu'au final j'ai par ex :

maFonction(array[0], array[1]);
ou
maFonction(array[0], array[1], array[2]);

merci de votre aide



Si je comprends bien (entre les lignes), tu veux passer le contenu
(variable) de ton tableau en paramètre de ta fonction puis utiliser le
contenu de ce tableau dans la fonction.

$Params = array("pomme", "poire", "abricot");

maFonction($Params);

function maFonction($tableau)
{
foreach($tableau as $fruit)
echo "Fruit : $fruit <br>n";

$nbFruits=count($tableau);
echo "Nombre total de fruits : $nbFruits <br>n";
}

--
Fredchou
mailto:
Avatar
Clément
Le 24/06/2012 17:54, Y a Personne a écrit :
me suis sans doute mal exprimé.

La fonction maFonction() n'a pas de paramètre. si je lui en passe ok,
j'arrive à les récupérer (même si le nombre est variable) car je sais
combien de paramètre je lui passe et que les variable sont en dur. ex :
maFonction($var1, $var2);

mais dans le cas d'un array qui comprend x données (qui peut changer à
chaque fois).

comment je peux mettre dans la fonction maFonction() chaque paramètre ?

pour qu'au final j'ai par ex :

maFonction(array[0], array[1]);
ou
maFonction(array[0], array[1], array[2]);

merci de votre aide



Je pense que vous cherchez func_get_args() :)
http://fr2.php.net/manual/fr/function.func-get-args.php

Exemple :

function maFonction(){
var_dump(func_get_args());
}

$Params = array("pomme", "poire", "abricot");

maFonction($Params);
// donne le resultat de var_dump($Params)
maFonction('coucou');
// donne array(1) { [0]=> string(6) "coucou" }
Avatar
Y a Personne
Le 24/06/2012 18:22, Fredchou a écrit :
Le 24/06/2012 17:54, Y a Personne a écrit :
me suis sans doute mal exprimé.

La fonction maFonction() n'a pas de paramètre. si je lui en passe ok,
j'arrive à les récupérer (même si le nombre est variable) car je sais
combien de paramètre je lui passe et que les variable sont en dur. ex :
maFonction($var1, $var2);

mais dans le cas d'un array qui comprend x données (qui peut changer à
chaque fois).

comment je peux mettre dans la fonction maFonction() chaque paramètre ?

pour qu'au final j'ai par ex :

maFonction(array[0], array[1]);
ou
maFonction(array[0], array[1], array[2]);

merci de votre aide



Si je comprends bien (entre les lignes), tu veux passer le contenu
(variable) de ton tableau en paramètre de ta fonction puis utiliser le
contenu de ce tableau dans la fonction.

$Params = array("pomme", "poire", "abricot");

maFonction($Params);

function maFonction($tableau)
{
foreach($tableau as $fruit)
echo "Fruit : $fruit <br>n";

$nbFruits=count($tableau);
echo "Nombre total de fruits : $nbFruits <br>n";
}





oui, merci

ca je savais mais sur ton exemple qui est aussi dans la page que tu m'as
donné, il n'y a qu'1 paramètre à la fonction, alors que j'en voudrais
autant que de données présent dans le array et ca je pense pas que ce
soit possible.

merci de ton aide
Avatar
Y a Personne
Le 24/06/2012 19:31, Clément a écrit :
Le 24/06/2012 17:54, Y a Personne a écrit :
me suis sans doute mal exprimé.

La fonction maFonction() n'a pas de paramètre. si je lui en passe ok,
j'arrive à les récupérer (même si le nombre est variable) car je sais
combien de paramètre je lui passe et que les variable sont en dur. ex :
maFonction($var1, $var2);

mais dans le cas d'un array qui comprend x données (qui peut changer à
chaque fois).

comment je peux mettre dans la fonction maFonction() chaque paramètre ?

pour qu'au final j'ai par ex :

maFonction(array[0], array[1]);
ou
maFonction(array[0], array[1], array[2]);

merci de votre aide



Je pense que vous cherchez func_get_args() :)
http://fr2.php.net/manual/fr/function.func-get-args.php

Exemple :

function maFonction(){
var_dump(func_get_args());
}

$Params = array("pomme", "poire", "abricot");

maFonction($Params);
// donne le resultat de var_dump($Params)
maFonction('coucou');
// donne array(1) { [0]=> string(6) "coucou" }






merci, oui, j'utilise func_get_args dans ma fonction,

mais ce que je cherche à faire, c'est pouvoir passer autant de
paramètres qu'il y a de valeurs dans mon array
Avatar
Olivier Miakinen
Bonjour,

Le 24/06/2012 17:54, Y a Personne a écrit :

me suis sans doute mal exprimé.

La fonction maFonction() n'a pas de paramètre. si je lui en passe ok,
j'arrive à les récupérer (même si le nombre est variable) car je sais
combien de paramètre je lui passe et que les variable sont en dur. ex :
maFonction($var1, $var2);

mais dans le cas d'un array qui comprend x données (qui peut changer à
chaque fois).

comment je peux mettre dans la fonction maFonction() chaque paramètre ?

pour qu'au final j'ai par ex :

maFonction(array[0], array[1]);
ou
maFonction(array[0], array[1], array[2]);



Tout d'abord, puisque tu as la maîtrise de la fonction maFonction(),
l'idéal serait de permettre de lui passer un tableau en lieu et
place des arguments en nombre variable.

Par exemple, si le premier argument ne peut pas être un tableau,
tu fais :
if (is_array(premier argument)) {
lire les arguments dans le tableau
} else {
faire comme avant
}

Si ce n'est pas le cas, mais qu'une valeur ne peut jamais être
passée comme premier argument (exemples : "", -1, NULL, etc.) tu
peux mettre cette valeur particulière en premier argument et le
tableau en deuxième argument.

************

Supposons que rien de ce qui précède ne t'agrée. Alors voici une
autre proposition. C'est moche, mais c'est tant pis pour toi...

switch(count($a)) {
case 0 : maFonction(); break;
case 1 : maFonction($a[0]); break;
case 2 : maFonction($a[0], $a[1]); break;
case 3 : maFonction($a[0], $a[1], $a[2]); break;
case 4 : maFonction($a[0], $a[1], $a[2], $a[3]); break;
case 5 : maFonction($a[0], $a[1], $a[2], $a[3], $a[4]); break;
default:
echo "Au secours, programmeur, il me manque des 'case' !"; exit;
}

Et en encore plus moche, tu peux utiliser eval().


Cordialement,
--
Olivier Miakinen
Avatar
Y a Personne
Le 25/06/2012 01:19, Olivier Miakinen a écrit :
Bonjour,

Le 24/06/2012 17:54, Y a Personne a écrit :

me suis sans doute mal exprimé.

La fonction maFonction() n'a pas de paramètre. si je lui en passe ok,
j'arrive à les récupérer (même si le nombre est variable) car je sais
combien de paramètre je lui passe et que les variable sont en dur. ex :
maFonction($var1, $var2);

mais dans le cas d'un array qui comprend x données (qui peut changer à
chaque fois).

comment je peux mettre dans la fonction maFonction() chaque paramètre ?

pour qu'au final j'ai par ex :

maFonction(array[0], array[1]);
ou
maFonction(array[0], array[1], array[2]);



Tout d'abord, puisque tu as la maîtrise de la fonction maFonction(),
l'idéal serait de permettre de lui passer un tableau en lieu et
place des arguments en nombre variable.

Par exemple, si le premier argument ne peut pas être un tableau,
tu fais :
if (is_array(premier argument)) {
lire les arguments dans le tableau
} else {
faire comme avant
}

Si ce n'est pas le cas, mais qu'une valeur ne peut jamais être
passée comme premier argument (exemples : "", -1, NULL, etc.) tu
peux mettre cette valeur particulière en premier argument et le
tableau en deuxième argument.

************

Supposons que rien de ce qui précède ne t'agrée. Alors voici une
autre proposition. C'est moche, mais c'est tant pis pour toi...

switch(count($a)) {
case 0 : maFonction(); break;
case 1 : maFonction($a[0]); break;
case 2 : maFonction($a[0], $a[1]); break;
case 3 : maFonction($a[0], $a[1], $a[2]); break;
case 4 : maFonction($a[0], $a[1], $a[2], $a[3]); break;
case 5 : maFonction($a[0], $a[1], $a[2], $a[3], $a[4]); break;
default:
echo "Au secours, programmeur, il me manque des 'case' !"; exit;
}

Et en encore plus moche, tu peux utiliser eval().


Cordialement,





merci de ta réponse.

j'ai effectivement pensé un moment à faire comme ton dernier exemple
mais me suis retenu.

J'ai pendant la nuit retravaillé ma fonction pour qu'elle accepte des
arguments array et/ou simple ce qui est effectivement la meilleur solution.

Mais je pensais qu'il y avait une astuce (prévue par php) pour faire ce
que je voulais mais apparemment pas.

Merci de votre aide
Avatar
newdb
Y a Personne wrote:
Mais je pensais qu'il y avait une astuce (prévue par php) pour faire ce
que je voulais mais apparemment pas.



peut-être voir du côté de la fonction extract :
http://php.net/manual/fr/function.extract.php


--
@@@@@
E -00 comme on est very beaux dis !
' `) /
|_ =="