Сброс переменных-ссылок

При сбросе ссылки, просто разрывается связь имени и содержимого переменной. Это не означает, что содержимое переменной будет разрушено. Например:

<?php
$a
= 1;
$b =& $a;
unset(
$a);
?>

Этот код не сбросит $b, а только $a.

Опять же, можно провести аналогию с вызовом unlink (в Unix).



Сброс переменных-ссылок
donny at semeleer dot nl
13-Jul-2006 07:10
Here's an example of unsetting a reference without losing an ealier set reference

<?php
$foo
= 'Bob';              // Assign the value 'Bob' to $foo
$bar = &$foo;              // Reference $foo via $bar.
$bar = "My name is $bar"// Alter $bar...
echo $bar;
echo
$foo;                // $foo is altered too.
$foo = "I am Frank";      // Alter $foo and $bar because of the reference
echo $bar;                // output: I am Frank
echo $foo;                // output: I am Frank

$foobar = &$bar;          // create a new reference between $foobar and $bar
$foobar = "hello $foobar"; // alter $foobar and with that $bar and $foo
echo $foobar;              //output : hello I am Frank
unset($bar);              // unset $bar and destroy the reference
$bar = "dude!";            // assign $bar
/* even though the reference between $bar and $foo is destroyed, and also the
reference between $bar and $foobar is destroyed, there is still a reference
between $foo and $foobar. */
echo $foo;                // output : hello I am Frank
echo $bar;                // output : due!
?>
rustin dot phares at hotmail dot com
12-Mar-2006 10:31
If you wish to unset both variables, you will need to unset the last referenced variable of that condition.

<?php
$a
= 1;
$b =& $a;
unset(
$b);
?>

* These must be in a reference->copy hierarchy in order to unset; example:

<?php
$a
= 1;
$b =& $a;
$c =& $b;
unset(
$c);
?>

This will not work:

<?php
$a
= 1;
$b =& $a;
$c = $b;
unset(
$c);
?>

* Only $c is unset in the above example, meaning that both variables $b and $a are still assigned "1".
libi
24-Jan-2006 12:20
clerca at inp-net dot eu dot org
"
If you have a lot of references linked to the same contents, maybe it could be useful to do this :
<?php
$a
= 1;
$b = & $a;
$c = & $b; // $a, $b, $c reference the same content '1'

$b = NULL; // All variables $a, $b or $c are unset
?>

"

------------------------

NULL will not result in unseting the variables.
Its only change the value to "null" for all the variables.
becouse they all points to the same "part" in the memory.
clerca at inp-net dot eu dot org
26-Nov-2005 12:33
If you have a lot of references linked to the same contents, maybe it could be useful to do this :
<?php
$a
= 1;
$b = & $a;
$c = & $b; // $a, $b, $c reference the same content '1'

$b = NULL; // All variables $a, $b or $c are unset
?>

I haven't test this trick a lot, but well, it seems to work greatly.

<Возвращение по ссылкеНеявное использование механизма ссылок>
 Last updated: Tue, 15 Nov 2005