2012-07-21 215 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

相关问题