(php)fonctions avec des paramétres variables

Résolu/Fermé
apprentiDev Messages postés 154 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 1 mai 2013 - 22 juil. 2010 à 17:50
apprentiDev Messages postés 154 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 1 mai 2013 - 8 août 2010 à 11:00
Bonjour à tous,

Je suis en train de lire un livre sur le PHP et il y un exemple que je ne comprends pas.
Le but de l'exemple est d'utiliser une fonction avec un nombre variable de paramètre qui sont stockés dans un tableau.

Voici le code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
	"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title> Fonction avec parametres variable</title>
</head>
<body>
<?php
function prod($tab)
// Le tableau est passé en paramétre à la fonction
{
$n=count($tab);
echo "Il y a $n paramètres :";
$prod =1;
foreach($tab as $val)
{
echo"$val, " ;
//$val  contient les valeurs du tableau
$prod *=$val;
}
echo " Le produit vaut";
return $prod;
// $prod contient le résultat final
}
// fin de la fonction prod
$tab1= range(1,10);
echo"Produit des nombres de 1 à 10 :", prod($tab1),"<br />";
$tab2 = array(7,12,15,3,21);
echo "Produit des éléments :", prod($tab2),"<br />";
?>
</body>
</html>


Le code fonction puisse je l'ai testé. Ce que je ne comprend pas c'est comment les tableaux qui sont données en fin de script sont passées en paramétres à la fonction prod.
C'est la variable $tab qui contient $tab1 et $tab2 mais comment ces deux tableaux sont passé en parametre à $tab?

En vous remerciant de votre réponse.

Cordialement apprentiDev


A voir également:

3 réponses

Dédé86 Messages postés 682 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 14 mars 2017 208
30 juil. 2010 à 21:24
Bonjour,

Je reprends l'exemple du code :

echo"Produit des nombres de 1 à 10 :", prod($tab1),"<br />";


En écrivant : prod($tab1), cela signifie que tu vas envoyer en paramètre à la fonction prod, la variable $tab1 qui est de type tableau. C'est une copie de la variable qui est envoyé à la fonction. Même principe pour $tab2

Je ne vois pas trop ce qui te gêne, c'est peut-être la syntaxe mais tu t'y feras :)
0
apprentiDev Messages postés 154 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 1 mai 2013 4
1 août 2010 à 15:44
Oui ca doit être la syntaxe car je comprend le code.

En fait si je devait reformuler ma question ce serait comment prod $tab comprend qu'il prend en paramètre $tab1 puis $tab2. Je suppose que si j'écrit $tableau1 vau lieu de $tab1 alors la fonction ne prendra pas en compte $tableau1?

En tout cas merci de ta réponse.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
1 août 2010 à 16:05
en fait ce qu'il faut comprendre c'est que la variable $tab est une variable interne à la fonction (sa portée est limitée à la fonction)

ta fonction prod est définie avec un argument que tu as nommé $tab

et lors de l'apel à la fonction par exemple prod($tab1)

on passe en argument l'array $tab1

la fonction retrouve donc les valeurs de cet array dans son premier argument qu'elle mets dans sa variable $tab pour faire le traitement

idem avec $atb2
0
apprentiDev Messages postés 154 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 1 mai 2013 4
8 août 2010 à 11:00
Merci de ta réponse. J'ai mieux compris.
0