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?
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'];
tu peux le faire:
list($a, $b, $c) = data();
print "$a $b $c"; // "abc def ghi"
function give_array(){
$a = "abc";
$b = "def";
$c = "ghi";
return compact('a','b','c');
}
$my_array = give_array();
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.
$array = data();
print_r($array);
À 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"
?>
<?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"];
?>
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']?>
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();
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;
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
Peut-être que c'est ce que vous avez cherché:
function data() {
// your code
return $array;
}
$var = data();
foreach($var as $value) {
echo $value;
}
$data = data();
$a = $data[0];
$b = $data[1];
$c = $data[2];
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