我总是使用$text = $datasql[0];
其中$datasql = array('0'=>array('some'=>'text', 'some2'=>'text2'), '1'=>$data, etc...);
找到了工作结构$datasql = &$datasql[0];
并开始工作,为什么?
真的参考?以及如何在内存中记住这个解决方案。
答案 0 :(得分:3)
每个变量都是对值的引用。通常,在您使用该值时会复制该值,但使用&
复制引用。
假设您有以下变量:
$original = 'john';
如果将$ datasql中的值分配给变量,则会复制该值:
$text = $original;
如果指定引用,则不会复制该值,但会引用:
$text = & $original;
这意味着$text
指向$original
的值。现在,如果您取消设置$original
,则$text
的内容仍然有效:
unset($original);
echo $text; // john
这是因为PHP知道仍然存在对$original
的值的引用,因此它将$original
变量删除为名称,但不删除内容。
您的示例类似,但该变量未显式取消设置,但已被覆盖。它是一个值的引用,就像任何其他变量一样。