Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP में Ternary Operator और Null Coalescing Operator में अंतर


PHP में दो conditional operators हैं जो similar दिखते हैं लेकिन अलग-अलग उद्देश्यों के लिए हैं।

Ternary Operator (? :)

किसी भी condition के आधार पर दो values में से एक चुनता है।

<?php
// Syntax: (condition) ? valueIfTrue : valueIfFalse;

$age = 20;
$status = ($age >= 18) ? 'वयस्क' : 'नाबालिग';
echo $status; // वयस्क

// Equivalent if-else:
if ($age >= 18) {
    $status = 'वयस्क';
} else {
    $status = 'नाबालिग';
}

// Nested ternary (avoid - hard to read)
$result = $a > $b ? ($a > $c ? $a : $c) : ($b > $c ? $b : $c);

Null Coalescing Operator (??) - PHP 7.0+

केवल null (या undefined) check करता है। False, 0, '' को valid values मानता है।

<?php
// Syntax: (variable) ?? defaultValue;

$username = $_GET['username'] ?? 'Guest';
// Equivalent to:
$username = isset($_GET['username']) ? $_GET['username'] : 'Guest';

// Key difference: 0, false, '' को null नहीं मानता
$count = 0;
echo $count ?? 10; // Output: 0 (नहीं 10!)

$name = '';
echo $name ?? 'Anonymous'; // Output: '' (नहीं 'Anonymous')

Side-by-Side Comparison

Value$val ? 'yes' : 'no'$val ?? 'default'
null'no''default'
undefinedNotice + 'no''default'
0'no'0
'' (empty string)'no'''
false'no'false
[] (empty array)'no'[]
'hello''yes''hello'
123'yes'123

Null Coalescing Assignment (??=) - PHP 7.4+

<?php
// केवल यदि null हो तो assign करें
$config['timeout'] ??= 30;
$config['retries'] ??= 3;

// Equivalent to:
if (!isset($config['timeout'])) $config['timeout'] = 30;

चेनिंग (Chaining)

<?php
// Ternary chaining
$val = $a ? $a : ($b ? $b : ($c ? $c : 'default'));

// Null coalescing chaining - बहुत साफ़
$val = $a ?? $b ?? $c ?? 'default';

// Practical: Config fallback chain
$dbHost = $_ENV['DB_HOST'] ?? $_SERVER['DB_HOST'] ?? config('db.host') ?? 'localhost';

Elvis Operator (?:) - PHP 5.3+

Ternary का short form: expr1 ?: expr2 = expr1 ? expr1 : expr2

<?php
$name = $inputName ?: 'Guest'; // यदि $inputName truthy तो वही, वरना 'Guest'

// vs Null coalescing
$name = $inputName ?? 'Guest'; // यदि $inputName null/unset तो 'Guest'

// Difference:
$inputName = '0';
echo $inputName ?: 'Guest'; // 'Guest' (क्योंकि '0' falsy है)
echo $inputName ?? 'Guest'; // '0' (क्योंकि '0' null नहीं है)

कौन सा कब उपयोग करें?

स्थितिOperatorकारण
Boolean condition पर आधारित? :True/false logic
Variable set है या नहीं (null check)??Only null/unset
Default value for missing config??0, false, '' valid हैं
Fallback chain??Clean chaining
Truthy/falsy check with default?:Short ternary
  1. - PHP में && और AND ऑपरेटर की तुलना

    PHP अंकगणित, असाइनमेंट, तुलना और कई अन्य ऑपरेशन्स करने के लिए अविश्वसनीय ऑपरेटर्स प्रदान करता है... इस लेख में, लॉजिकल ऑपरेटर्स && और AND पर अधिक महत्व दिया जाएगा और अध्ययन करेंगे कि उन्हें उनकी प्रीसिडेंस के आधार पर कैसे उपयोग किया जा सकता है। लॉजिकल ऑपरेटर्स && और AND ट्रू-या-फाल्स परिणाम उत्पन्न

  1. - पायथन सेट पर ऑपरेटर और मेथड में क्या अंतर है?

    पायथन का सेट ऑब्जेक्ट बिल्ट-इन सेट क्लास को दर्शाता है। यूनियन, इंटरसेक्शन, डिफरेंस और सिमेट्रिक डिफरेंस जैसे विभिन्न सेट ऑपरेशन को संबंधित मेथड को कॉल करके या ऑपरेटर का उपयोग करके किया जा सकता है। मेथड द्वारा यूनियन >>> s1={1,2,3,4,5} >>> s2={4,5,6,7,8} >>> s1.union(s2)

  1. - Python में = और == ऑपरेटर्स में क्या अंतर है?

    Python में `=` सिंबल को असाइनमेंट ऑपरेटर के रूप में परिभाषित किया गया है। इसके बाईं ओर एक वेरिएबल और दाईं ओर एक एक्सप्रेशन की आवश्यकता होती है। दाईं ओर के एक्सप्रेशन का मान बाईं ओर के वेरिएबल को असाइन किया जाता है। एक्सप्रेशन और वेरिएबल का नाम परस्पर विनिमेय नहीं हैं। >>> a = 10 >>&g