एल्विस ऑपरेटर (?:) और 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']` में एक खाली स्ट्रिंग `""` आती है, तो पहला विकल्प (`?:` के साथ) "गेस्ट" आउटपुट करता है, जबकि दूसरा (`??` के साथ) खाली स्ट्रिंग ही आउटपुट करता है।