массив ссылочных переменных - PullRequest
0 голосов
/ 30 июня 2010

Я всегда использую $text = $datasql[0];, где $datasql = array('0'=>array('some'=>'text', 'some2'=>'text2'), '1'=>$data, etc...);

и нашел работу конструкции $datasql = &$datasql[0]; и работа, почему?

Это действительно ссылка ??и как запомни php в памяти это решение.

1 Ответ

3 голосов
/ 30 июня 2010

Каждая переменная является ссылкой на значение. Обычно значение копируется при его использовании, но с & копируется ссылка .

Предположим, у вас есть следующая переменная:

$original = 'john';

Если вы присваиваете значение из $ datasql переменной, это значение копируется:

$text = $original;

Если назначить ссылку , значение не копируется, но ссылается:

$text = & $original;

Это означает, что $text указывает на значение $original. Теперь, если вы сбросили $original, содержимое $text остается в силе:

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

Это потому, что PHP знает, что все еще есть ссылка на значение $original, поэтому он удаляет переменную $original в качестве имени, но не содержимое.

Ваш пример похож, за исключением того, что переменная явно не сброшена, а перезаписана. Это ссылка на значение, как и любая другая переменная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...