aleksei13b
@aleksei13b
junior-разработчик

Присваивание по сылке тонкости?

Читаю документацию по присваиванию по сылке, там есть такой пример, но нет обьяснения механизма. На первый взгляд кажется что значения должны быть одинаковыми, но они разные... Если не сложно объясните пожалуйста доходчиво.
$a = 1;
$c = 2;
$b =& $a; // $b points to 1
$a =& $c; // $a points now to 2, but $b still to 1;
echo $a, " ", $b;
// Output: 2 1
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Это надо воспринимать как "переменная ссылается (указывает) на область в памяти"
Если совсем просто, то в ячейку памяти записали число 1 когда вызвали $a = 1;
$b =& $a; - теперь $b указывает на ту же ячейку памяти, к которой была привязана переменная $a
$a =& $c; - теперь $a указывает на ячейку памяти с которой была связана $c, при этом изначально ячейка памяти которая была выделена под 1 так и осталась и до сих пор связана с $b.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
kimono
@kimono
Web developer
$a = 1;
$c = 2;

- у нас есть значение 1 и a, которая за ним смотрит.
$b =& $a;
- теперь у нас есть ещё и b, которая так же как и a смотрит за значением 1.
$a =& $c;
Теперь a смотрит вместе с c за значением 2, при этом b смотрит по-прежнему за значением 1.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы