(php)fonctions avec des paramétres variables

Résolu
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

3 réponses

  1. 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
    1. Merci de ta réponse. J'ai mieux compris.
  2. 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.
    1. 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 :)