Techniquement, vous ne pouvez pas renvoyer plusieurs valeurs. Il existe cependant des moyens de contourner cette limitation. La manière la plus similaire de renvoyer plusieurs valeurs consiste à utiliser le mot-clé list :
function getXYZ()
{
return array(4,5,6);
}
list($x,$y,$z) = getXYZ();
// Afterwards: $x == 4 && $y == 5 && $z == 6
// (This will hold for all samples unless otherwise noted)
Techniquement, vous renvoyez un tableau et utilisez list pour stocker les éléments de ce tableau avec des valeurs différentes, plutôt que de stocker le tableau réel. L'utilisation de cette technique donnera l'impression de renvoyer plusieurs valeurs.
La solution est spécifique à PHP. Certaines langues ont des structures similaires, mais beaucoup d'autres n'en ont pas. Il existe une autre méthode couramment utilisée pour « renvoyer » plusieurs valeurs et est disponible dans presque toutes les langues (d’une manière ou d’une autre). Cependant, cette approche semble complètement différente, il faudra donc peut-être un certain temps pour s'y habituer.
// note that I named the arguments $a, $b and $c to show that
// they don't need to be named $x, $y and $z
function getXYZ(&$a, &$b, &$c)
{
$a = 4;
$b = 5;
$c = 6;
}
getXYZ($x, $y, $z);
listCette technique est également utilisée dans certaines fonctions définies par PHP lui-même (par exemple $count
">str_replace). Cela peut sembler très différent du renvoi de plusieurs valeurs, mais cela vaut la peine le moins le sait .
$matchesLa troisième méthode consiste à utiliser un objet pour contenir les différentes valeurs dont vous avez besoin. Cela nécessite plus de saisie, elle est donc utilisée moins fréquemment que les deux méthodes ci-dessus. Néanmoins, il peut être judicieux d'utiliser cette fonctionnalité lorsque le même ensemble de variables est utilisé à plusieurs endroits (ou, bien sûr, dans un langage qui ne prend pas en charge la méthode ci-dessus ou vous permet de le faire sans saisie supplémentaire).
class MyXYZ
{
public $x;
public $y;
public $z;
}
function getXYZ()
{
$out = new MyXYZ();
$out->x = 4;
$out->y = 5;
$out->z = 6;
return $out;
}
$xyz = getXYZ();
$x = $xyz->x;
$y = $xyz->y;
$z = $xyz->z;
La méthode ci-dessus résume les principales façons dont les fonctions renvoient plusieurs valeurs. Il existe cependant quelques variantes de ces méthodes. Les variantes les plus intéressantes sont celles qui renvoient réellement un tableau, car vous pouvez faire beaucoup de choses avec les tableaux en PHP.
Premièrement, nous pouvons simplement renvoyer un tableau sans le traiter comme autre chose qu'un tableau :
La partie la plus intéressante du code ci-dessus est que le code à l'intérieur de la fonction est le même que dans le premier exemple que j'ai fourni ; seul le code qui appelle la fonction a changé. Cela signifie que ce que l'appelant de la fonction fait avec les résultats renvoyés par la fonction dépend de la personne qui a appelé la fonction.
Vous pouvez également utiliser un tableau associatif :
qui vous permet de faire la même chose que ci-dessus mais d'écrire moins de code. (Eh bien, l'exemple n'aura pas moins de code, mais l'application réelle le fera probablement.) Cependant, je pense que les économies de frappe sont minimes et que cela rend le code plus difficile à lire, donc je ne le ferais pas moi-même. Cependant, voici un exemple :
compactIl convient de noter que même si compact a un homologue dans extract
qui peut être utilisé dans le code appelant ici, car son utilisation est une mauvaise idée (surtout pour quelque chose d'aussi simple que cette chose), Je n'en donnerai même pas un échantillon. Le problème est que cela crée « comme par magie » les variables pour vous, et vous ne pouvez pas voir quelles variables sont créées sans regarder dans d’autres parties du code. compact 在 extract
Enfin, j'aimerais mentionner que list ne fonctionne pas bien avec les tableaux associatifs. Le contenu suivant répondra à vos attentes :
Si vous utilisez list 与关联数组一起使用,并且其他人将来必须更改被调用函数中的代码(这可能发生在任何情况下),它可能会突然中断,所以我建议不要将 list avec un tableau associatif et que quelqu'un d'autre doit modifier le code dans la fonction appelée à l'avenir (cela peut arriver dans tous les cas), cela pourrait se briser soudainement, je recommande donc de ne pas utiliser
Impossible de renvoyer 2 variables. Cependant, vous pouvez étaler un tableau et le renvoyer créer des conditions pour renvoyer des variables dynamiques, etc.
Techniquement, vous ne pouvez pas renvoyer plusieurs valeurs. Il existe cependant des moyens de contourner cette limitation. La manière la plus similaire de renvoyer plusieurs valeurs consiste à utiliser le mot-clé
list
:Techniquement, vous renvoyez un tableau et utilisez
La solution est spécifique à PHP. Certaines langues ont des structures similaires, mais beaucoup d'autres n'en ont pas. Il existe une autre méthode couramment utilisée pour « renvoyer » plusieurs valeurs et est disponible dans presque toutes les langues (d’une manière ou d’une autre). Cependant, cette approche semble complètement différente, il faudra donc peut-être un certain temps pour s'y habituer.list
pour stocker les éléments de ce tableau avec des valeurs différentes, plutôt que de stocker le tableau réel. L'utilisation de cette technique donnera l'impression de renvoyer plusieurs valeurs.list
Cette technique est également utilisée dans certaines fonctions définies par PHP lui-même (par exemple $count">str_replace). Cela peut sembler très différent du renvoi de plusieurs valeurs, mais cela vaut la peine le moins le sait .
$matches
La troisième méthode consiste à utiliser un objet pour contenir les différentes valeurs dont vous avez besoin. Cela nécessite plus de saisie, elle est donc utilisée moins fréquemment que les deux méthodes ci-dessus. Néanmoins, il peut être judicieux d'utiliser cette fonctionnalité lorsque le même ensemble de variables est utilisé à plusieurs endroits (ou, bien sûr, dans un langage qui ne prend pas en charge la méthode ci-dessus ou vous permet de le faire sans saisie supplémentaire).La méthode ci-dessus résume les principales façons dont les fonctions renvoient plusieurs valeurs. Il existe cependant quelques variantes de ces méthodes. Les variantes les plus intéressantes sont celles qui renvoient réellement un tableau, car vous pouvez faire beaucoup de choses avec les tableaux en PHP.
Premièrement, nous pouvons simplement renvoyer un tableau sans le traiter comme autre chose qu'un tableau :
La partie la plus intéressante du code ci-dessus est que le code à l'intérieur de la fonction est le même que dans le premier exemple que j'ai fourni ; seul le code qui appelle la fonction a changé. Cela signifie que ce que l'appelant de la fonction fait avec les résultats renvoyés par la fonction dépend de la personne qui a appelé la fonction.
Vous pouvez également utiliser un tableau associatif :
Php a la fonction
qui vous permet de faire la même chose que ci-dessus mais d'écrire moins de code. (Eh bien, l'exemple n'aura pas moins de code, mais l'application réelle le fera probablement.) Cependant, je pense que les économies de frappe sont minimes et que cela rend le code plus difficile à lire, donc je ne le ferais pas moi-même. Cependant, voici un exemple :compact
compact
Il convient de noter que même sicompact a un homologue dans
extract
qui peut être utilisé dans le code appelant ici, car son utilisation est une mauvaise idée (surtout pour quelque chose d'aussi simple que cette chose), Je n'en donnerai même pas un échantillon. Le problème est que cela crée « comme par magie » les variables pour vous, et vous ne pouvez pas voir quelles variables sont créées sans regarder dans d’autres parties du code.
compact
在extract
Enfin, j'aimerais mentionner que
list
ne fonctionne pas bien avec les tableaux associatifs. Le contenu suivant répondra à vos attentes :Cependant, ce qui suit fera quelque chose de différent :
Si vous utilisez
avec un tableau associatif . 🎜list
与关联数组一起使用,并且其他人将来必须更改被调用函数中的代码(这可能发生在任何情况下),它可能会突然中断,所以我建议不要将list
avec un tableau associatif et que quelqu'un d'autre doit modifier le code dans la fonction appelée à l'avenir (cela peut arriver dans tous les cas), cela pourrait se briser soudainement, je recommande donc de ne pas utiliserImpossible de renvoyer 2 variables. Cependant, vous pouvez étaler un tableau et le renvoyer créer des conditions pour renvoyer des variables dynamiques, etc.
Par exemple, cette fonction renverra
$var2
Dans l'application :
Si vous voulez les deux, vous pouvez modifier légèrement la fonction