Maison développement back-end tutoriel php Comment renvoyer plusieurs valeurs à partir d'une fonction PHP

Comment renvoyer plusieurs valeurs à partir d'une fonction PHP

Aug 27, 2023 pm 02:05 PM
php函数 Renvoie plusieurs valeurs

Comment renvoyer plusieurs valeurs à partir dune 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.

  • Déclaration de retour en PHP
  • Utilisez un tableau pour renvoyer plusieurs valeurs
  • Utilisez des objets pour renvoyer plusieurs valeurs

Déclaration de retour 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;

?>

Copier après la connexion

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.

Renvoie plusieurs valeurs à l'aide d'un tableau

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;

?>
Copier après la connexion

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;

?>
Copier après la connexion

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;

?>
Copier après la connexion

Renvoie plusieurs valeurs à l'aide d'objets

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;

?>
Copier après la connexion

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.

Réflexions finales

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Musée de deux points: Guide de localisation de Bungle Wasteland
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Musée de deux points: Guide de localisation de Bungle Wasteland
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment optimiser l'effet de chargement paresseux des images via les fonctions php ? Comment optimiser l'effet de chargement paresseux des images via les fonctions php ? Oct 05, 2023 pm 12:13 PM

Comment optimiser l'effet de chargement paresseux des images via les fonctions php ?

PHP obsolète : la fonction ereg_replace() est obsolète - Solution PHP obsolète : la fonction ereg_replace() est obsolète - Solution Aug 18, 2023 am 10:48 AM

PHP obsolète : la fonction ereg_replace() est obsolète - Solution

Comment réduire l'utilisation de la mémoire grâce aux fonctions php ? Comment réduire l'utilisation de la mémoire grâce aux fonctions php ? Oct 05, 2023 pm 01:45 PM

Comment réduire l'utilisation de la mémoire grâce aux fonctions php ?

Similitudes et différences entre les fonctions PHP et les fonctions Flutter Similitudes et différences entre les fonctions PHP et les fonctions Flutter Apr 24, 2024 pm 01:12 PM

Similitudes et différences entre les fonctions PHP et les fonctions Flutter

Introduction aux fonctions PHP : fonction strtr() Introduction aux fonctions PHP : fonction strtr() Nov 03, 2023 pm 12:15 PM

Introduction aux fonctions PHP : fonction strtr()

Résumé des méthodes d'implémentation des fonctions d'édition et de traitement d'images à l'aide des fonctions de traitement d'images PHP Résumé des méthodes d'implémentation des fonctions d'édition et de traitement d'images à l'aide des fonctions de traitement d'images PHP Nov 20, 2023 pm 12:31 PM

Résumé des méthodes d'implémentation des fonctions d'édition et de traitement d'images à l'aide des fonctions de traitement d'images PHP

Quelle est la performance des fonctions PHP ? Quelle est la performance des fonctions PHP ? Apr 18, 2024 pm 06:45 PM

Quelle est la performance des fonctions PHP ?

Comparer les fonctions PHP aux fonctions dans d'autres langages Comparer les fonctions PHP aux fonctions dans d'autres langages Apr 10, 2024 am 10:03 AM

Comparer les fonctions PHP aux fonctions dans d'autres langages

See all articles