Il arrive souvent lors de construction de fonctions personnalisées en PHP de vouloir retourner plusieurs variables calculées par la fonction en une fois plutôt que de créer une fonction différente par traitement.
Retour par tableau
Cette solution consiste en fait à renvoyer un tableau contenant les différents résultats. L’absence de typage en PHP nous permet facilement de renvoyer plusieurs résultat de types différents dans une même structure.
Exemple de retour par tableau On veux pouvoir récupérer les carrés et les cubes d’un nombre à partir d’une seule fonction
<?php
unction calcul_puissance($n){
$puiss1 = $n;
$puiss2 = $puiss1*$n;
$puiss3 = $puiss2*$n;
$table = array($puiss1,$puiss2,$puiss3); // créer un tableau avec les valeurs $puiss1, $puiss2 et $puiss3
return $table; // retourne le tableau précédemment créé
}
?>
Le passage par référence
Vous pouvez modifier directement des variables du script en les passant par référence à la fonction avec le préfix & sur le nom de variable. Toutes modifications effectuées intra-muraux dans la fonction affectera la variable passée en paramètre par référence à la fonction.
Exemple de passage par référence
<?php
function assign_valeur($var, $value){
$value = $var;
}
$chaine = 'Voici une chaine de test';
assign_valeur(&$chaine,'2e chaine de test');
echo $chaine;
?>
La variable $chaine contenant une valeur d’origine sera modifiée directement au niveau du script par la fonction assign_valeur qui lui assignera la valeur contenu dans le deuxième paramètre de la fonction ( en l’occurence, echo $chaine affichera "2e chaine de test" )
La modification par global
Une autre solution un peu du même genre que la précédente permet de modifier une variable du script à partir de la fonction. Il faut pour cela spécifier avant traitement de la variable par la fonction que la variable est à modifier au niveau du script général par le mot clef global
Exemple de modification par global
<?php
$nb_pizza=0;
function ajouter_pizza(){ // déclaration de la fonction
global $nb_pizza;
$nb_pizza = $nb_pizza+1; // itération du nombre de pizza
}
ajouter_pizza(); // ajoute une pizza
ajouter_pizza(); // ajoute une pizza
echo "Nombre de pizza(s) : ".$nb_pizza;
?>
Résultat : Nombre de pizza(s) : 2
On spécifie au niveau de la fonction que la variable $nb_pizza à utiliser n’est pas une nouvelle variable mais bien celle définie précédement au début du script. Si jamais vous enlevez le mot clef global, la fonction essayera de créer une nouvelle variable et l’incrémentera de un. Cependant à la sortie de la fonction la variable du même nom au niveau du script restera inchangée et gardera sa valeur initiale : 0

