2010-06-30 159 views
-2

我总是用$text = $datasql[0]; 其中$datasql = array('0'=>array('some'=>'text', 'some2'=>'text2'), '1'=>$data, etc...);参考变量数组

,并找到了工作建设$datasql = &$datasql[0];和工作,为什么?

那真的参考?以及如何在内存中记住这个解决方案。

+0

你的问题到底是什么? – 2010-06-30 13:29:12

+0

我也不明白。 – Till 2010-06-30 14:27:55

+0

我将它解释为:如果原始变量不再需要被引用,那么'$ datasql =&$ datasql [0]'如何工作? – Sjoerd 2010-06-30 19:45:48

回答

3

每个变量都是对一个值的引用。正常情况下,使用该值时会复制该值,但&将复制参考

假设你有以下变量:

$original = 'john'; 

如果分配从$ datasql值的变量,该值被复制:

$text = $original; 

如果分配参考,该值不会被复制,而是被引用:

$text = & $original; 

这意味着$text指向$original的值。现在,如果你取消设置$original$text内容仍然有效:

unset($original); 
echo $text; // john 

这是因为PHP知道还有到$original值的引用,所以它删除$original变量名,而不是内容。

您的示例与此类似,但该变量未明确取消设置,但被覆盖。它就像任何其他变量一样是一个值的引用。