web-dev-qa-db-fra.com

PHP tableau de retour de fonction

Je dois renvoyer plusieurs valeurs d'une fonction, c'est pourquoi je les ai ajoutées à un tableau et 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?

64
Ajay

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'];
87

tu peux le faire:

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

print "$a $b $c"; // "abc def ghi"
49
fredrik
function give_array(){

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

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


$my_array = give_array();

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

22
ITS Alaska

La fonction data 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];

Vous pouvez également utiliser la fonction list(), comme @fredrik le recommande, pour faire la même chose en ligne.

13
Nick
$array  = data();

print_r($array);
6
Headshota

À partir de PHP 5.4, vous pouvez tirer parti du déréférencement de tableaux et procéder de la manière suivante:

<?

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"
?>
5
Obinwanne Hill
<?php
function demo($val,$val1){
    return $arr=array("value"=>$val,"value1"=>$val1);

}
$arr_rec=demo(25,30);
echo $arr_rec["value"];
echo $arr_rec["value1"];
?>
4
mohd jagir

voici la meilleure façon dans une fonction similaire

 function cart_stats($cart_id){

$sql = "select sum(price) sum_bids, count(*) total_bids from carts_bids where cart_id = '$cart_id'";
$rs = mysql_query($sql);
$row = mysql_fetch_object($rs);
$total_bids = $row->total_bids;
$sum_bids = $row->sum_bids;
$avarage = $sum_bids/$total_bids;

 $array["total_bids"] = "$total_bids";
 $array["avarage"] = " $avarage";

 return $array;
}  

et vous obtenez les données de tableau comme ça 

$data = cart_stats($_GET['id']); 
<?=$data['total_bids']?>
2
Mohamed Badr

Le problème sous-jacent concerne l’accès aux données du tableau, comme le souligne Felix Kling dans la première réponse. 

Dans le code suivant, j'ai accédé aux valeurs du tableau avec les constructions print et echo. 

function data()
{

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

    $array = array($a, $b, $c);

    print_r($array);//outputs the key/value pair

    echo "<br>";

    echo $array[0].$array[1].$array[2];//outputs a concatenation of the values

}

data();
1
Lawson Arrington

Pour obtenir les valeurs de chaque variable, vous devez traiter la fonction comme un tableau:

function data() {
    $a = "abc";
    $b = "def";
    $c = "ghi";
    return array($a, $b, $c);
}

// Assign a variable to the array; 
// I selected $dataArray (could be any name).

$dataArray = data();
list($a, $b, $c) = $dataArray;
echo $a . " ". $b . " " . $c;

//if you just need 1 variable out of 3;
list(, $b, ) = $dataArray;
echo $b;
1
user3589574

Voici ce que j'ai fait à l'intérieur du yii framewok:

public function servicesQuery($section){
        $data = Yii::app()->db->createCommand()
                ->select('*')
                ->from('services')
                ->where("section='$section'")
                ->queryAll();   
        return $data;
    }

puis dans mon fichier de vue:

      <?php $consultation = $this->servicesQuery("consultation"); ?> ?>
      <?php foreach($consultation as $consul): ?>
             <span class="text-1"><?php echo $consul['content']; ?></span>
       <?php endforeach;?>

Ce que je fais en prenant une partie de la table que j'ai sélectionnée. devrait fonctionner pour seulement php moins le "Yii" manière pour la db

1
Erik Leath

Peut-être que c'est ce que vous avez cherché:

function data() {
    // your code
    return $array; 
}
$var = data(); 
foreach($var as $value) {
    echo $value; 
}
0
Houssem
$data = data(); 
$a = $data[0];
$b = $data[1];
$c = $data[2];
0
bodesam

Je pense que la meilleure façon de le faire est de créer un tableau var global. Ensuite, faites ce que vous voulez dans les données de la fonction en le passant comme référence. Pas besoin de retourner quoi que ce soit aussi.

$array = array("white", "black", "yellow");
echo $array[0]; //this echo white
data($array);

function data(&$passArray){ //<<notice &
    $passArray[0] = "orange"; 
}
echo $array[0]; //this now echo orange
0
Khalid