Avatar ·

एल्विस ऑपरेटर (?:) और null कोएलेसिंग ऑपरेटर (??) PHP में: क्या अंतर है?

सभी को नमस्ते। मैं एक शुरुआती PHP डेवलपर हूँ, और मैं दो ऑपरेटरों के बीच अंतर समझ नहीं पा रहा हूँ: शॉर्ट टर्नरी ऑपरेटर (जिसे "एल्विस" भी कहा जाता है) `?:` और null कोएलेसिंग ऑपरेटर `??`। डॉक्यूमेंटेशन में लिखा है कि ये समान हैं, लेकिन मैं लगातार भ्रमित हो जाता हूँ कि किसका उपयोग करूँ।\n\nमेरे पास ऐसा कोड है। मैं फॉर्म या डेटाबेस से डेटा प्राप्त कर रहा हूँ, और यूज़रनेम प्रदर्शित करना चाहता हूँ, अगर वह मौजूद है, या "गेस्ट" अगर नहीं है:\n\n```php\n$username = $_POST['username'] ?: 'गेस्ट';\n```\n\nयह काम करता है, लेकिन कभी-कभी मैं देखता हूँ कि अन्य डेवलपर्स ऐसे लिखते हैं:\n\n```php\n$username = $_POST['username'] ?? 'गेस्ट';\n```\n\nदोनों विकल्प एक ही काम करते प्रतीत होते हैं। लेकिन मैंने देखा कि अगर `$_POST['username']` में एक खाली स्ट्रिंग `""` आती है, तो पहला विकल्प (`?:` के साथ) "गेस्ट" आउटपुट करता है, जबकि दूसरा (`??` के साथ) खाली स्ट्रिंग ही आउटपुट करता है।