2015-07-21 43 views
0

我想知道數組參數傳遞的性能:爲避免數據副本添加'傳入引用'說明符是值得的,或者這樣的微型優化已經被運行時隱式實現了嗎?數組參數傳遞:寫入時複製是隱式的?

比方說,我有一個由非順序鍵索引的數組(當然)。我寫這個幫手

function position_in_array($needle, &$haystack) { 
    $k = array_search($needle, $haystack); 
    return $k === false ? false : array_search($k, array_keys($haystack)); 
} 

我可以看到from documentation讓我覺得這樣的說法陣列副本可能真的是在寫副本。

如果這種假設證明是正確的,我將刪除'引用'說明符。

+0

只要刪除你的'&'; PHP是_smarter_而不是它看起來第一眼。 –

+0

@AlmaDo:謝謝,我的確傾向於遵循你的'修行路線'。但問題是,智能多少? – CapelliC

+0

它更聰明,就像[this](https://www.youtube.com/watch?v=_YZIBWQr_yk) –

回答

2

PHP是一種動態的鬆散類型語言,它使用寫時複製和引用計數。

是的,PHP在寫入時使用了複製。

你並不需要指定&,除非你需要修改傳遞給函數的參數(這意味着你不想寫時複製,但實際參考)

至於NB評論,it's taken from the manual,在變量的介紹中。

+0

謝謝。你介意在你引用的地方添加一個提示嗎? – CapelliC

+0

@CapelliC [取自手冊,變量介紹](http://php.net/manual/en/internals2.variables.intro.php) –

+0

再次感謝。我從WordPress開發跳到PHP中,學到了很多東西。我在大文檔中錯過了這一個... – CapelliC

相關問題