2011-04-17 243 views
55

我需要從一個函數返回多個值,因此我已經將它們添加到數組並返回數組。PHP函數返回數組

<? 

function data(){ 

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

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


?> 

如何我可以通過調用上述函數接收$a$b$c值是多少?

+2

像你訪問任何陣列可以存取權限的值。我建議閱讀http://php.net/manual/en/language.types.array.php。 – 2011-04-17 09:01:34

回答

42

可以做到這一點:

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

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

Docs:http://www.php.net/manual/en/function.list。php – 2011-04-17 09:00:34

+0

@GiacomoTecyaPigani list不是一個函數,它是一個語言結構,如[docs](http://php.net/manual/en/function.list.php)所述。 – Taylan 2014-11-11 08:31:42

13

數據函數返回一個陣列,這樣就可以訪問相同的方式函數的結果作爲您通常訪問數組的元素:

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

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

或者你可以使用list()功能,@fredrik建議,做同樣的事情在一條線上。

80

您可以數組鍵添加到您的返回值,然後使用這些鍵打印數組值,如下所示:

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

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

這裏是一個類似功能的最佳途徑

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; 
} 

,你會得到這樣的

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

數組數據,我認爲這樣做是創建一個全球性的最佳途徑var數組。然後通過傳遞它作爲參考,在函數數據中做任何你想做的事情。不需要返回任何東西。

$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 
1

這是我做的警予framewok內:

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

那麼我認爲文件中:

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

我在做什麼抓住了表我有一個白癡部分選擇。應該只是PHP減去「Yii的」工作方式爲DB

17
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

+1

不要忘了,你也可以使用'extract($ my_array)'將數組分離回變量:http://php.net/manual/en/function.extract.php – 2013-05-23 17:56:23

+1

這很酷......但在我的經驗中不是很常用。 – 2014-05-02 04:24:11

1

根本的問題圍繞着訪問數組內的數據,菲利克斯克林第一響應指出。

在下面的代碼中,我用print和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(); 
4

從PHP 5.4,你可以利用數組語法,做這樣的事情:

<? 

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" 
?> 
+7

注意:您可能不想評估該功能3次! – 2017-01-10 18:23:51

2
<?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"]; 
?>