Хотя это очевидно и подчеркивается в PHP мануале, тем не менее поймал себя на мысли, что неверно интерпретировал следующий код:

1
2
3
4
5
$a = 12;
$b = &$a;
unset($b); // удаляем ссылку
var_dump($b);
var_dump($a);

Результат исполнения:

NULL
int(12)

Таким образом, при удалении ссылки, удаляется именно ссылка, оригинальная переменная остается нетронутой, и указывает на все то же значение. В общем, в PHP, ссылки (reference) являются не чем иным, как алиасами (alias) – думать о них как об указателях (pointers) неправильно.

UPDATE: When you unset the reference, you just break the binding between variable name and variable content. This does not mean that variable content will be destroyed. Т.е. когда ссылка удаляется, на деле уничтожается лишь связь между именем переменной и ее значением. Это значит, что при уничтожении переменной путем unset(), значение не уничтожается.

  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Reddit
  • Technorati
  • email
  • Print
  • DZone
  • eKudos
  • LinkedIn
  • StumbleUpon
  • Tumblr
  • Twitter
Trackback

no comment untill now

Add your comment now