2010-11-26 78 views

回答

40

這是一個通過參考。函數內的變量將「指向」與調用上下文中的變量相同的數據。

function foo(&$bar) 
{ 
    $bar = 1; 
} 

$x = 0; 
foo($x); 
echo $x; // 1 
+1

我必須開始使用`foo`和`bar`在我的例子.. – cambraca 2010-11-26 01:15:48

+2

所以它的行爲類似於使用`$全球var` – Alex 2010-11-26 01:18:01

+4

@Alex時,那種真實的,但有兩個大差異:1)它適用於非全局範圍(調用其他函數的函數)和2)它不依賴於知道變量名稱的內部函數。作爲函數參數的引用比全局變量更易於調試並且不易出錯,儘管一些相同的問題(例如,變量的意外更改)仍然適用。 – Matthew 2010-11-26 01:20:41

5

它接受對變量的引用作爲參數。

這意味着函數對所述參數的任何變化(例如,$var = "Hi!")會影響由調用功能傳遞的變量。

15

基本上如果你在功能裏面改變$var,它會被改變以外。例如:

$var = 2; 

function f1(&$param) { 
    $param = 5; 
} 

echo $var; //outputs 2 
f1($var); 
echo $var; //outputs 5 
2

一個變量(& $ FOO)前的符號(&)的值將覆蓋通行證指定要通過引用傳遞變量來代替。

例如,如果你有這樣的:

function doStuff($variable) { 
    $variable++; 
} 

$foo = 1; 

doStuff($foo); 
echo $foo; 
// output is '1' because you passed the value, but it doesn't alter the original variable 

doStuff(&$foo); // this is deprecated and will throw notices in PHP 5.3+ 
echo $foo; 
// output is '2' because you passed the reference and php will alter the original variable. 

這兩種方式都可以。

function doStuff(&$variable) { 
    $variable++; 
} 

$foo = 1; 

doStuff($foo); 
echo $foo; 
// output is '2' because the declaration of the function requires a reference. 
2

它是pass by reference

如果您熟悉C指針,那就好像將指針傳遞給變量。

除了不需要取消引用(如C)。

2

你逝去的是$ var作爲參考,這意味着$ var的實際價值被更新時,它被噓函數內部修飾

例如:

function boo(&$var) { 
    $var = 10; 
} 

$var = 20; 
echo $var; //gets 20 
boo($var); 
echo $var //gets 10 
-1

如果任何函數符號開始(&)它意味着它通過引用函數調用。它將返回一個對變量的引用而不是該值。

function reference_function(&$total){ 
    $extra = $total + 10; 
} 

$total = 200; 
reference_function($total) ; 
echo $total; //OutPut 210 
相關問題