Maison > Article > développement back-end > Comment renvoyer plusieurs valeurs à partir d'une fonction PHP
Nous utilisons principalement des paramètres de fonction pour obtenir des données externes à l'intérieur de la fonction pour un traitement ultérieur. De même, nous renvoyons les valeurs des fonctions PHP pour accéder aux données traitées en dehors de la fonction. Vous pouvez définir des fonctions en PHP avec ou sans valeurs de retour.
Bien qu'une fonction en PHP puisse avoir plusieurs paramètres, il est impossible d'avoir plusieurs instructions return. Dans ce tutoriel, je vais vous montrer comment renvoyer plusieurs valeurs à partir d'une fonction en PHP.
Les fonctions en PHP peuvent avoir une instruction return
facultative. Lorsqu'elle est appelée depuis une fonction, l'instruction return arrête immédiatement l'exécution de tout autre code. Cela inclut également d'autres déclarations de retour. Voici un exemple :
<?php function multiple_returns($a, $b) { $x = 2*$a; $y = 3*$b; return $x; if($y%3 == 0) { echo "Y is: ".$y; } return $y; } $m = 0; $n = 0; $m = multiple_returns(5, 18); // list($m, $n) = multiple_returns(5, 18); // Outputs: Values are: 10 and 0 echo "Values are: ".$m." and ".$n; ?>
Veuillez noter que l'exécution du code ci-dessus ne renvoie pas les informations sur $y
值的语句。这是因为函数在第一个 return 语句后停止执行。如果取消注释我们使用 list()
分配变量值的行,则 $m
和 $n
都将是 NULL
因为 list()
Cela ne fonctionne qu'avec des tableaux et la fonction ne renvoie qu'un nombre.
Nous savons que l'instruction return peut renvoyer n'importe quel type de valeur. Nous pouvons donc également l'utiliser pour renvoyer un tableau contenant toutes les valeurs que nous souhaitons réellement renvoyer. Nous pouvons réécrire l'exemple ci-dessus comme suit pour renvoyer plusieurs valeurs :
<?php function multiple_returns($a, $b) { $x = 2*$a; $y = 3*$b; return [$x, $y]; } list($m, $n) = multiple_returns(5, 18); // Outputs: Values are: 10 and 54 echo "Values are: ".$m." and ".$n; ?>
Du point de vue PHP, vous renvoyez toujours une seule valeur, mais cette valeur unique est un tableau qui peut contenir plusieurs autres valeurs. C'est l'un des moyens les plus simples de simuler une fonction renvoyant plusieurs valeurs en PHP.
Dans l'exemple ci-dessus, nous ne renvoyons que deux valeurs. Cependant, lorsque plusieurs valeurs sont impliquées, les choses peuvent devenir un peu délicates car vous devez vous souvenir de l'ordre correct des valeurs renvoyées.
À partir de PHP 7.1, vous pouvez utiliser list()
avec des tableaux associatifs. Cela signifie que l'ordre dans lequel les éléments sont renvoyés n'affecte pas la valeur attribuée. Voici un exemple :
<?php function multiple_returns($a, $b) { $x = 2*$a; $y = 3*$b; return ['m' => $x, 'n' => $y]; } list('m' => $m, 'n' => $n) = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; list('n' => $n, 'm' => $m) = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; ?>
Vous pouvez voir que la variable $m
和 $n
obtient la même valeur dans les deux cas puisque la valeur est désormais attribuée en fonction de la clé plutôt que de l'index numérique.
À partir de PHP 7.1, vous n'avez même pas besoin d'utiliser list()
car PHP prend désormais en charge la syntaxe de déstructuration. On peut réécrire l'exemple précédent comme :
<?php function multiple_returns($a, $b) { $x = 2*$a; $y = 3*$b; return ['m' => $x, 'n' => $y]; } ['m' => $m, 'n' => $n] = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; ['n' => $n, 'm' => $m] = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; ?>
Une autre façon de renvoyer plusieurs valeurs à partir d'une fonction PHP consiste à renvoyer un objet. Nous pouvons définir des classes avec différentes propriétés en utilisant des variables membres publiques. Un inconvénient de cette technique est que vous devez écrire plus de code, ce qui consommera plus de mémoire pour stocker plusieurs instances de la classe. L'avantage est que vous pouvez utiliser le même ensemble de variables à plusieurs endroits.
<?php class ValueStore { public $m; public $n; } function multiple_returns_class($a, $b) { $my_values = new ValueStore(); $my_values->m = 2*$a; $my_values->n = 3*$b; return $my_values; } $values = multiple_returns_class(5, 18); // Values are: 10 and 54 echo "Values are: ".$values->m." and ".$values->n; ?>
Comme vous pouvez le voir, nous pouvons réussir à obtenir plusieurs valeurs d'une fonction simplement en créant un objet et en attribuant des valeurs à ses différentes propriétés.
Dans ce tutoriel, vous avez appris que PHP ne permet pas de renvoyer plusieurs valeurs directement depuis une fonction. Cependant, vous pouvez contourner cette limitation en regroupant plusieurs valeurs dans un tableau ou un objet. Après cela, il vous suffit de renvoyer le tableau ou l'objet de la fonction et d'accéder aux valeurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!