এটি ২০০৯ সালে আনসেট করা ম্যানুয়ালটির পৃষ্ঠাতে উল্লেখ করা হয়েছিল :
unset()
এর নাম যা বলে ঠিক তাই করে - একটি ভেরিয়েবল আনসেট করুন। এটি তাত্ক্ষণিক স্মৃতিশক্তি জোর করে না। পিএইচপি-র আবর্জনা সংগ্রাহক যখন এটি ফিট হয় তখনই তা করবে - উদ্দেশ্য হিসাবে শীঘ্রই, সেই সিপিইউ চক্রের কোনওভাবেই প্রয়োজন হয় না, বা স্ক্রিপ্টটির স্মৃতিশক্তি শেষ হয়ে যাওয়ার আগে যেমন দেরি হয় ততক্ষণে late
আপনি যদি তা করে থাকেন $whatever = null;
তবে আপনি ভেরিয়েবলের ডেটা আবার লিখছেন। আপনি মেমরি দ্রুত মুক্তি / সঙ্কুচিত পেতে পারেন, তবে এটি কোড থেকে সিপিইউ চক্রগুলি চুরি করতে পারে যা সত্যই তাদের দ্রুত প্রয়োজন, ফলস্বরূপ দীর্ঘতর সামগ্রিক প্রয়োগের সময় হতে পারে।
(২০১৩ সাল থেকে, সেই unset
ম্যান পেজটিতে আর কোনও বিভাগ অন্তর্ভুক্ত নেই)
নোট করুন যে পিএইচপি 5.3 অবধি, আপনার যদি বিজ্ঞপ্তিযুক্ত রেফারেন্সে দুটি বস্তু থাকে যেমন পিতামাতা-সন্তানের সম্পর্কের ক্ষেত্রে, প্যারেন্ট অবজেক্টে আনসেট () কল করা শিশু অবজেক্টে পিতা-মাতার রেফারেন্সের জন্য ব্যবহৃত স্মৃতি মুক্ত করে না। (পিতা-মাতার অবজেক্টটি আবর্জনা সংগ্রহের সময় স্মৃতি মুক্ত হবে না)) ( বাগ ৩৩৫৯৫ )
প্রশ্ন " আনসেট এবং = নাল মধ্যে পার্থক্য " কিছু পার্থক্য বিশদ দেয়:
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()
সমকক্ষের তুলনায় কিছুটা দ্রুত a প্রতীক টেবিল এন্ট্রি আপডেট করা এটি অপসারণের চেয়ে দ্রুত বলে মনে হচ্ছে।
- আপনি যখন অস্তিত্বহীন (
unset
) ভেরিয়েবলটি ব্যবহার করার চেষ্টা করবেন তখন একটি ত্রুটি ট্রিগার হয়ে উঠবে এবং ভেরিয়েবলের এক্সপ্রেশনটির মান নাল হবে। (কারণ, পিএইচপি আর কি করা উচিত? প্রতিটি অভিব্যক্তিটির কিছুটা মূল্য হওয়া দরকার))
- নাল দ্বারা নির্ধারিত একটি ভেরিয়েবল যদিও এখনও নিখুঁতভাবে স্বাভাবিক পরিবর্তনশীল।
$whatever
কোনও বস্তুর দিকে নির্দেশ করলে,$whatever = null
পয়েন্টারটি ওভাররাইট করে, বস্তুটি নিজেই নয়, সুতরাং এটি মূলত একইরূপে কাজ করেunset()
।