2013-06-29 31 views
3

在PHP中,就是使用指針,如之間的區別:PHP指針VS引用

function foo($var) 
{ 
    $var = 3; 
} 

$a = 0; 
foo(&$a); 

和參考:

function foo(&$var) 
{ 
    $var = 3; 
} 

$a = 0; 
foo($a); 

他們都修改原始變量的值,但他們在內部表現不同?

+2

使用第二個,因爲第一個不再支持/可用。 – luk2302

+1

是的,它們的工作方式是一樣的,這是來自PHP 5.3.8的第1個替代方法的消息:'不推薦使用:不推薦使用通過引用時間傳遞;如果您想通過引用來傳遞它,請修改foo()的聲明。如果你想啓用呼叫時傳遞引用,你可以在第8行的C:\ xampp \ htdocs \ a.php中的INI文件中設置allow_call_time_pass_reference爲true。 – Stano

回答

6

在PHP中,沒有指針,只有引用。您的示例演示pass by reference

代碼段之間的區別僅在語法上,第一種語法現在已被棄用。

+0

謝謝,我不知道他們是同樣的事情或第一種風格已被棄用。另外,不通過引用存儲函數參數中傳遞的變量的引用?如果是這樣,那麼沒有參考文獻? –

+0

好吧,我不確定內部如何實現傳遞引用。我只考慮它,因爲許多語言都通過引用,但沒有PHP引用。但是這與你的問題沒有關係,所以我刪除了混淆部分。 – Yogu

+0

在內存管理方面,是否引用了一個更好的實踐? –