यह 2009 में परेशान मैनुअल के पेज में उल्लिखित किया गया था :
unset()बस इसका नाम क्या कहता है - एक वेरिएबल को अनसेट करें। यह तत्काल मेमोरी फ़्रीज़िंग को बाध्य नहीं करता है। PHP का कचरा संग्रहकर्ता तब करेगा जब वह फिट होता है - जैसे ही इरादे से, वैसे ही जैसे कि सीपीयू चक्रों की आवश्यकता नहीं होती है, या जैसे ही पटकथा स्मृति से बाहर हो जाएगी, जो भी पहले हो।
यदि आप कर रहे हैं $whatever = null;तो आप परिवर्तनशील डेटा को फिर से लिख रहे हैं। आपको मेमोरी फ़्रीड / सिकुड़ कर तेज़ी से प्राप्त हो सकती है, लेकिन यह सीपीयू साइकल को उस कोड से चुरा सकता है जो वास्तव में जल्द ही उनकी आवश्यकता है, जिसके परिणामस्वरूप एक लंबा समग्र निष्पादन समय होता है।
(2013 से, उस unsetआदमी पृष्ठ में अब उस अनुभाग को शामिल नहीं किया गया है)
ध्यान दें कि php5.3 तक, यदि आपके पास परिपत्र संदर्भ में दो ऑब्जेक्ट हैं , जैसे कि माता-पिता के बच्चे के संबंध में, माता-पिता ऑब्जेक्ट पर अनसेट () कॉल करने से बच्चे के ऑब्जेक्ट में माता-पिता के संदर्भ के लिए उपयोग की जाने वाली मेमोरी मुक्त नहीं होगी। (न ही जब पैरेंट ऑब्जेक्ट कचरा एकत्र किया जाता है तो मेमोरी को मुक्त कर दिया जाएगा।) ( बग 33595 )
प्रश्न " अंतर और अशक्त के बीच अंतर " कुछ अंतरों का विवरण देता है:
unset($a)$aप्रतीक तालिका से भी निकालता है; उदाहरण के लिए:
$a = str_repeat('hello world ', 100);
unset($a);
var_dump($a);
आउटपुट:
Notice: Undefined variable: a in xxx
NULL
लेकिन जब $a = nullउपयोग किया जाता है:
$a = str_repeat('hello world ', 100);
$a = null;
var_dump($a);
Outputs:
NULL
ऐसा लगता है कि यह $a = nullअपने unset()समकक्षों की तुलना में थोड़ा तेज है : प्रतीक तालिका प्रविष्टि को अपडेट करने से इसे हटाने की तुलना में तेज प्रतीत होता है।
- जब आप एक गैर-मौजूद (
unset) चर का उपयोग करने का प्रयास करते हैं , तो एक त्रुटि उत्पन्न हो जाएगी और चर अभिव्यक्ति के लिए मूल्य शून्य हो जाएगा। (क्योंकि, PHP को और क्या करना चाहिए? प्रत्येक अभिव्यक्ति को कुछ मूल्य में परिणाम की आवश्यकता होती है।)
- इसके साथ असाइन किया गया अशक्त एक चर अभी भी एक पूरी तरह से सामान्य चर है।
$whateverकिसी ऑब्जेक्ट की ओर$whatever = nullइशारा करते हैं , तो पॉइंटर को ओवरराइट करता है, ऑब्जेक्ट को ही नहीं, इसलिए यह मूल रूप से उसी तरह कार्य करता हैunset()।