Ich muss mehrere Werte von einer Funktion zurückgeben, daher habe ich sie einem Array hinzugefügt und das Array zurückgegeben.
<?
function data(){
$a = "abc";
$b = "def";
$c = "ghi";
return array($a, $b, $c);
}
?>
Wie kann ich die Werte erhalten $a
, $b
, $c
durch die obige Funktion aufrufen?
Antworten:
Sie können Ihren Rückgabewerten Array-Schlüssel hinzufügen und diese Schlüssel dann verwenden, um die Array-Werte zu drucken, wie hier gezeigt:
function data() { $out['a'] = "abc"; $out['b'] = "def"; $out['c'] = "ghi"; return $out; } $data = data(); echo $data['a']; echo $data['b']; echo $data['c'];
quelle
du kannst das:
list($a, $b, $c) = data(); print "$a $b $c"; // "abc def ghi"
quelle
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
quelle
extract($my_array)
das Array auch wieder in Variablen aufteilenDie Datenfunktion gibt ein Array zurück, sodass Sie auf das Ergebnis der Funktion genauso zugreifen können, wie Sie normalerweise auf Elemente eines Arrays zugreifen würden:
<?php ... $result = data(); $a = $result[0]; $b = $result[1]; $c = $result[2];
Oder Sie können die
list()
Funktion verwenden, wie von @fredrik empfohlen, um dasselbe in einer Zeile zu tun.quelle
quelle
Ab PHP 5.4 können Sie die Array-Dereferenzierung nutzen und Folgendes tun:
<? 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" ?>
quelle
<?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"]; ?>
quelle
Hier ist der beste Weg in einer ähnlichen Funktion
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; }
und Sie erhalten die Array-Daten wie folgt
$data = cart_stats($_GET['id']); <?=$data['total_bids']?>
quelle
Um die Werte jeder Variablen zu erhalten, müssen Sie die Funktion wie ein Array behandeln:
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;
quelle
Vielleicht haben Sie danach gesucht:
function data() { // your code return $array; } $var = data(); foreach($var as $value) { echo $value; }
quelle
Das habe ich im yii-Framewok gemacht:
public function servicesQuery($section){ $data = Yii::app()->db->createCommand() ->select('*') ->from('services') ->where("section='$section'") ->queryAll(); return $data; }
dann in meiner Ansichtsdatei:
<?php $consultation = $this->servicesQuery("consultation"); ?> ?> <?php foreach($consultation as $consul): ?> <span class="text-1"><?php echo $consul['content']; ?></span> <?php endforeach;?>
Was ich mache, um einen Kretin-Teil der Tabelle zu greifen, die ich ausgewählt habe. sollte für nur PHP minus dem "Yii" Weg für die Datenbank funktionieren
quelle
Das zugrunde liegende Problem besteht darin, auf die Daten innerhalb des Arrays zuzugreifen, wie Felix Kling in der ersten Antwort hervorhebt.
Im folgenden Code habe ich mit den Konstrukten print und echo auf die Werte des Arrays zugegriffen.
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();
quelle
$data = data(); $a = $data[0]; $b = $data[1]; $c = $data[2];
quelle
Ich denke, der beste Weg, dies zu tun, besteht darin, ein globales var-Array zu erstellen. Machen Sie dann innerhalb der Funktionsdaten, was Sie wollen, indem Sie es als Referenz übergeben. Sie müssen auch nichts zurückgeben.
$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
quelle
Ihre Funktion ist:
function data(){ $a = "abc"; $b = "def"; $c = "ghi"; return array($a, $b, $c); }
Es gibt ein Array zurück, in dem Position 0 $ a, Position 1 $ b und Position 2 $ c ist. Sie können daher auf $ a zugreifen, indem Sie genau Folgendes tun:
data () [0]
Wenn Sie $ myvar = data () [0] ausführen und $ myvar drucken, erhalten Sie "abc", den Wert, der $ a innerhalb der Funktion zugewiesen wurde.
quelle
Ich habe nach einer einfacheren Methode gesucht als ich, aber sie wird in diesem Beitrag nicht beantwortet. Meine Methode funktioniert jedoch und ich verwende keine der oben genannten Methoden:
function MyFunction() { $lookyHere = array( 'value1' => array('valuehere'), 'entry2' => array('valuehere') ); return $lookyHere; }
Ich habe keine Probleme mit meiner Funktion. Ich lese die Daten in einer Schleife, um meine zugehörigen Daten anzuzeigen. Ich habe keine Ahnung, warum jemand die oben genannten Methoden vorschlagen würde. Wenn Sie mehrere Arrays in einer Datei speichern möchten, aber nicht alle geladen haben, verwenden Sie die oben beschriebene Funktionsmethode. Andernfalls werden alle Arrays auf der Seite geladen, wodurch Ihre Site verlangsamt wird. Ich habe mir diesen Code ausgedacht, um alle meine Arrays in einer Datei zu speichern und bei Bedarf einzelne Arrays zu verwenden.
quelle