2011-09-11 62 views
0
function foo($a) 
{ 
    $b = ...; 
    $c = ...; 
    return (both b and c); 
} 

,所以我能得到$b價值$first$c價值$second返回兩個值的功能,兩個不同的變量是在PHP

我知道你可以通過return array($b,$c)返回多於1個變量,但那麼它應該是$var[0]$var[1],然後我需要鍵入$first = $var[0]$second = $var[1]所以我創造了更多無用的變量

所以是有可能這樣做沒有數組?

回答

2

基本上,函數只有一個返回值。您可以使用成員變量firstsecond或帶有鍵"first""second"的關聯數組返回一個類,但您仍然只返回單個對象。 *

或者,你可以到你的函數$first$second引用:

function foo($a, &$b, &$c) 
{ 
    $b = ...; 
    $c = ...; 
} 

foo(42, $first, $second); 

我不是這種方法的大風扇,但是,因爲它不是從調用點立即清除即$first$second將要被修改。

*請注意,如果您返回一個數組,您總是可以使用簡寫list($first,$second) = foo(42);

1

不,你不能那樣做。函數只返回一個結果。

你可以做什麼,如果可能的話,就是通過引用傳遞一個變量。

function foo($a, &$b, &$c){ 
$b = ...; 
$c = ...; 
} 

以下內容將對函數作用域之外的$ b和$ c進行更改。

2

不,它不能。

但你仍然可以返回從功能的陣列,而是使用「列表」接受便捷結果:

list ($first, $second) = foo ($a); 
0

唯一的選擇,以避免返回一個數組是返回一個對象,或串行數據,但是你不會從中獲勝。

相關問題