Comment créer une fonction PHP avec des retours multiples

  1. PHP array pour retourner des valeurs multiples
  2. Fonction PHP avec retour dynamique conditionnel
  3. Combinaison d’un tableau PHP et d’un retour dynamique de condition
  4. PHP générateur à rendement de valeurs multiples

Une fonction PHP est un bloc d’instructions réutilisable, elle nous permet d’avoir un retour étant une simple chaîne, un tableau ou un objet JSON. Mais il n’est pas possible d’avoir plus d’un retour. Vous pouvez cependant utiliser un tableau, créer une instruction conditionnelle pour retourner une variable dynamique ou utiliser les générateurs (pour PHP 5.5 et plus).

PHP array pour retourner des valeurs multiples

funtion arrayFunc(){
    $var1 = "return 1";
    $var2 = "return 2";
    
    return array($var1, $var2);
}

En application:

$result = arrayFunc();
var_dump($result);
//output: array(2) { [0]=> string(8) "return 1" [1]=> string(8) "return 2" }

La fonction ci-dessus peut avoir plusieurs retours sous la forme d’un tableau, elle est accessible en utilisant:

$result = arrayFunc();
echo $result[0]; // return 1
echo $result[1]; // return 2

Depuis PHP 7.1, il existe une nouvelle fonction appelée destructuring des listes. Cela signifie qu’il est possible de faire des choses comme:

$array = ['dog', 'cat', 'horse', 'fish'];
[$q, $w, $e, $r] = $array;

echo $q; // output: dog
echo $w; // output: cat

L’application d’une fonction ressemblerait à ceci:

function descructingFunction(){
    return ['A', 'sample', 'descructing', 'function'];
}
[$a, $b, $c, $d] = descructingFunction();

echo $a; //output: A
echo $d; // output: function

Fonction PHP avec retour dynamique conditionnel

function condFunc($x = true){
    $ret1 = "One";
    $ret2 = "Two";
    
    if($x == true){
        return $ret1;
    }else{
        return $ret2;
    }
}

En application:

echo condFunc(true);
//output: One

En adoptant cette approche, il n’est pas nécessaire de renvoyer des valeurs multiples. Ainsi, la fonction traitera la condition de filtrer la valeur correcte nécessaire.

Combinaison d’un tableau PHP et d’un retour dynamique de condition

En modifiant un peu la fonction, on peut avoir la possibilité de renvoyer un tableau ou un retour dynamique.

Exemple:

function combination($x = true){
    $ret1 = "One";
    $ret2 = "Two";
    
    if($x === true){
        return $ret2;
    }
    if($x == "both"){
        return array($ret1, $ret2);
    }   
}

echo combination(); //output: Two
var_dump(combination("both")) //output: array(2) { [0]=> string(8) "return 1" [1]=> string(8) "return 2" }

L’utilisation de cette approche permettra à la fonction d’être plus flexible.

PHP générateur à rendement de valeurs multiples

Une fonction de générateur ne retourne pas une valeur, mais renseigne autant de valeurs que nécessaire. Elle retourne un objet qui peut être itéré.

Exemple:

function multipleValues(){    
    yield "return 1";
    yield "return 2";
}

$return = multipleValues();
foreach($return as $ret){
    echo $ret; //$ret first value is "return 1" then "return 2"
}

Note: Le mot-clé d’un générateur est “yield”. Il agit comme un retour à une instruction de fonction, mais il n’arrête pas l’exécution et retourne, il fournit une valeur aux boucles de code.

Caution: Quand on utilise yield comme expression, il doit être entouré de parenthèses.

Exemple:

$generator = (yield $test);

Article connexe - PHP Function

  • Comment formater correctement un nombre avec des zéros en tête de liste en PHP