用了這麼久unset函數,現在才知道原理是這樣
php unset
unset()
這個函數應該都用過,用來清除變量,刪除變量。
現在有一個問題,比如
$a = 'abc';
$b = &$a;
echo $b;
那麼這時候$b也是’abc’。這兩個變量指向同一個內存地址。
如果現在
//...
unset($a);
echo $b;
會是什麼結果呢?
答案是
abc
這是爲什麼呢?明明兩個變量指向同一個內存地址。
原因是unset
只是刪除了這個變量,也就是刪除了這個變量的指針,但是並沒有刪除這個內存地址,這個內存區域還存在。
那麼什麼時候刪除這個內存地址呢?這個是由GC垃圾回收機制來刪除的,如果沒有變量使用這個內存地址,那麼垃圾回收就會開始運作了。