2009 yılında unset kılavuzunun sayfasında belirtilmiştir :
unset()sadece adının söylediği şeyi yapar - bir değişkenin ayarını kaldırın. Anında bellek boşaltmaya zorlamaz. PHP'nin çöp toplayıcısı, bu CPU döngülerine zaten ihtiyaç duyulmadığı için veya komut dosyasında bellek bitmeden önce olduğu gibi, nihayetinde, uygun gördüğünde bunu yapacak.
Bunu yapıyorsanız $whatever = null;, değişkenin verilerini yeniden yazıyorsunuz demektir. Belleği daha hızlı serbest bırakabilir / daraltabilirsiniz, ancak CPU döngülerini gerçekten onlara daha erken ihtiyaç duyan koddan çalabilir ve bu da daha uzun bir genel yürütme süresine neden olabilir.
(2013'ten bu yana, bu unsetsayfa artık bu bölümü içermiyor)
Php5.3'e kadar, bir üst-alt ilişkisi gibi dairesel başvuruda iki nesneniz varsa , üst nesnede unset () çağrıldığında alt nesnede üst başvuru için kullanılan bellekte boş alan olmayacağını unutmayın. (Üst nesne çöp toplandığında bellek de serbest bırakılmaz.) ( Hata 33595 )
" Unset ve = null arasındaki fark " sorusu bazı farklılıkları açıklar :
unset($a)ayrıca $asembol tablosundan kaldırır ; Örneğin:
$a = str_repeat('hello world ', 100);
unset($a);
var_dump($a);
Çıktılar:
Notice: Undefined variable: a in xxx
NULL
Ancak ne zaman $a = nullkullanılır:
$a = str_repeat('hello world ', 100);
$a = null;
var_dump($a);
Outputs:
NULL
Görünüşe göre karşıtından $a = nullbiraz daha hızlı unset(): Bir sembol tablosu girişini güncellemek, kaldırmaktan daha hızlı görünüyor.
- varolmayan bir (
unset) değişkeni kullanmaya çalıştığınızda bir hata tetiklenir ve değişken ifadesinin değeri null olur. (Çünkü PHP başka ne yapmalı? Her ifadenin bir değer oluşturması gerekir.)
- Buna null atanmış bir değişken yine de tamamen normal bir değişkendir.
$whateverBir nesneye işaret ederse$whatever = null, nesnenin kendisinin değil, işaretçinin üzerine yazıldığından, temel olarak aynı şekilde hareket ettiğini unutmayınunset().