Logo 6tech
Accueil du site > Tutoriaux > Fonction multi-résultat

Fonction multi-résultat

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

bas de page Contact - EIC 6tech  - SIRET : 479 088 270 00018 - Tel: 0970 406 988 - © 2009