Почему переменная, присвоенная по значению элементу массива (после более раннего присвоения по ссылке), изменяется при изменении элемента массива?

Когда я запускаю код blow:

$var[0] = 'a';
$tmp = $var;
$var[0] = 'b';
var_dump($tmp); 

, на выходе получается:

array(1) { [0]=> string(1) "a" }

Когда я добавляю следующую строку:

$var[0] = 'a';
$foo = & $var[0]; # added line
$tmp = $var;
$var[0] = 'b';
var_dump($tmp); 

, результат становится:

array(1) { [0]=> &string(1) "b" }

Если я присваиваю переменную $ foo по ссылке на элемент массива $ var [0] - это переменная $ tmp , присвоенная по значению массиву $ var должен измениться вот так? Почему это происходит?

6
задан outis 26 March 2012 в 01:30
поделиться