84 votes

Comment accéder aux éléments du tableau de retour d'une fonction ?

Je dois retourner plusieurs valeurs à partir d'une fonction, c'est pourquoi je les ai ajoutées à un tableau et j'ai renvoyé le tableau.

<?
function data(){
    $a = "abc";
    $b = "def";
    $c = "ghi";

    return array($a, $b, $c);
}
?>

Comment puis-je recevoir les valeurs de $a, $b, $c en appelant la fonction ci-dessus ?

117voto

Vous pouvez ajouter des clés de tableau à vos valeurs de retour, puis utiliser ces clés pour imprimer les valeurs de tableau, comme indiqué ici :

function data() {
    $out['a'] = "abc";
    $out['b'] = "def";
    $out['c'] = "ghi";
    return $out;
}

$data = data();
echo $data['a'];
echo $data['b'];
echo $data['c'];

62voto

fredrik Points 5043

vous pouvez le faire :

list($a, $b, $c) = data();

print "$a $b $c"; // "abc def ghi"

21voto

ITS Alaska Points 326
function give_array(){

    $a = "abc";
    $b = "def";
    $c = "ghi";

    return compact('a','b','c');
}


$my_array = give_array();

http://php.net/manual/fr/function.compact.php

14voto

Nick Points 4959

La fonction de données renvoie un tableau, vous pouvez donc accéder au résultat de la fonction de la même manière que vous accédez normalement aux éléments d'un tableau :

<?php
...
$result = data();

$a = $result[0];
$b = $result[1];
$c = $result[2];

Ou vous pouvez utiliser la fonction list(), comme le recommande @fredrik, pour faire la même chose dans une ligne.

6voto

Obinwanne Hill Points 1990

À partir de PHP 5.4, vous pouvez tirer parti de la déréférencement de tableau et faire quelque chose comme ceci :

<?

function data()
{
    $retr_arr["a"] = "abc";
    $retr_arr["b"] = "def";
    $retr_arr["c"] = "ghi";

    return $retr_arr;
}

$a = data()["a"];    //$a = "abc"
$b = data()["b"];    //$b = "def"
$c = data()["c"];    //$c = "ghi"
?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X