2012-07-21 212 views
0

像:數組元素是否可以引用另一個數組的元素?

$arr1['X'] = 5; 
$arr2['Y'] = &$arr1['X']; 
$arr1['X'] = 7; 

print $arr2['Y']; // prints 7 

我嘗試這樣做,我看不出有任何的內存使用減少(我的陣列有〜1000個條目),所以我想PHP使得陣列或東西的克隆?所以在技術上它不是真正的參考,是嗎?

我的數組有一個子數組(鍵=>值對)而不是數字。我注意到,如果我讓他們的對象,內存使用量較低(〜2MB以下)

+0

從您的示例中不清楚您希望看到內存使用情況下降的情況。你能詳細解釋一下嗎? – mellamokb 2012-07-21 00:56:55

+0

好吧,我在想,如果一個變量引用另一個變量,而不是正常地使用它的值,則使用的內存應該減少:P – Alex 2012-07-21 00:59:42

+3

但是引用仍然佔用內存。現在不必存儲實際值,而是需要存儲它指向的值的內存地址,在某些情況下,實際上可能需要更多內存來存儲實際值本身。 – mellamokb 2012-07-21 01:00:31

回答

1

如果發出:

$arr2 = &$arr1; 

您引用整個數組,它應該消耗更少的內存。你可以用XDEBUG來衡量它,我假設你正在使用它。

+0

其實我正在使用memory_get_usage – Alex 2012-07-21 02:32:29

+0

這個:http://xdebug.org/docs/execution_trace,用http://www.vim.org打開輸出文件,是檢查你的內存消耗的好方法,它幫助我很多=)檢查'show_mem_delta = 1'配置參數。 – Niloct 2012-07-21 21:16:17

相關問題