payment by upi: sinhamit@icici or payment by bank account name: amit kumar sinha, account number: 2646728782 IFSC code: KKBK0005660 SWIFT: KKBKINBB

Please support if you like my work by payment through upi: sinhamit@icici or payment by bank

account name: Amit Kumar Sinha,
account number: 2646728782
IFSC code: KKBK0005660
SWIFT: KKBKINBB


Operator Precedence & Associativity   in Category: पीएचपी   by amit

🕙 Posted on 2023-05-28 at 14:03:34


तुलना ऑपरेटर्स

    पिछले पृष्ठ में, आपने = (सरल असाइनमेंट) ऑपरेटर और == (बराबर equal to) ऑपरेटर के बीच अंतर देखा है। आपको अन्य तुलना ऑपरेटरों के साथ भी पहचान किया गया है। तुलना ऑपरेटर, जैसा कि उनके नाम से पता चलता है, आपको दो मानों (values) की तुलना करने की अनुमति देता है। ढीली तुलना में (== बराबर , और != बराबर नहीं), टाइप जुगलिंग तब होता है जब एक संख्या या संख्यात्मक स्ट्रिंग की तुलना अन्य डेटा-प्रकारों के साथ की जाती है, जो स्वचालित रूप से संख्यात्मक डेटा-प्रकार के लिए टाइप-कास्ट किए जाते हैं।

<?php
  $abc = 5; $xyz = "5";   // चर $abc पूर्णांक है, जबकि $xyz स्ट्रिंग है।
  var_dump( $abc == $xyz );   // के बराबर ऑपरेटर ढीली तुलना की जाँच करता है, आउटपुट bool(true) है
  echo '<br />';
  var_dump( $abc === $xyz );   // के समान ऑपरेटर सख्त तुलना की जाँच करता है, आउटपुट bool(false) है
  echo '<br />';

  var_dump( $abc != $xyz );   // के बराबर नहीं ऑपरेटर ढीली तुलना की जांच करता है, आउटपुट bool(false) है
  echo '<br />';
  var_dump( $abc !== $xyz );   // के समान नहीं ऑपरेटर है सख्त तुलना की जांच करता है, आउटपुट bool(true) है
  echo '<br />';
?>

    === (समान) और !== (समान नहीं) ऑपरेटर न केवल दो शाब्दिक (या चर/स्थिरांक) के मूल्यों की तुलना करते हैं, बल्कि वे इन दो शाब्दिक (या चर/स्थिरांक) के डेटा-प्रकारों की तुलना भी करते हैं। == (बराबर) ऑपरेटर शिथिल (ढीली) रूप से दो शाब्दिक या दो चर/स्थिरांक की तुलना करता है। आइए इन तुलना संचालकों (ऑपरेटरों) को निम्नलिखित उदाहरणों में विस्तार से समझें:

<?php
  var_dump( 5.5 == "5.5" ); // आउटपुट bool(true) है
  echo '<br />';
var_dump( null == "" ); // आउटपुट bool(true) है
  echo '<br />';
var_dump( false == "" ); // आउटपुट bool(true) है
  echo '<br />';
var_dump( 0 == false ); // आउटपुट bool(true) है
  echo '<br />';
var_dump( 0 == null ); // आउटपुट bool(true) है
  echo '<br />';
var_dump( 0 == "0" ); // आउटपुट bool(true) है
  echo '<br />';
var_dump( 7 == "07" ); // आउटपुट bool(true) है
  echo '<br />';
var_dump( 7 == "+07" ); // आउटपुट bool(true) है
  echo '<br />';
var_dump( 7 == "    07" ); // आउटपुट bool(true) है
  echo '<br />';
var_dump( 70 == 70.00 ); // आउटपुट bool(true) है
  echo '<br />';
var_dump( 700 == "7e2" ); // आउटपुट bool(true) है
  echo '<br />';
var_dump( 2 == true ); // आउटपुट bool(true) है
  echo '<br />';
var_dump( "xyz" == true ); // आउटपुट bool(true) है
?>

    उपरोक्त प्रत्येक उदाहरण को 'गलती से सही' (FALSE POSITIVE) के रूप में जाना जाता है क्योंकि इन सभी की जब शिथिल (ढीली) रूप से तुलना की जाती है, तो आउटपुट bool(true), लेकिन जब उनकी सख्ती से === (समान) ऑपरेटर के साथ तुलना की जाती है, तो ये सभी bool(false) आउटपुट देंगे। कोई भी स्ट्रिंग जिसमें अक्षर E(केस असंवेदनशील) जो संख्याओं से घिरा होता है, उसे वैज्ञानिक संकेतन में व्यक्त (expressed in scientific notation) संख्या के रूप में देखा जाएगा। यह अप्रत्याशित परिणाम उत्पन्न कर सकता है, जैसा कि ऊपर दिए गए उदाहरण में बताया गया है।

    निम्नलिखित चार उदाहरण PHP 7.1.0 से पहले bool(true) आउटपुट करते हैं और न तो E_NOTICE और न ही E_WARNING दिखाया जाएगा। आप बाद के विषयों (topics) में विभिन्न प्रकार की ERRORS के बारे में अधिक जानेंगे। PHP के पुराने संस्करणों में, जब एक स्ट्रिंग डेटा-प्रकार की तुलना पूर्णांक या फ्लोट डेटा-प्रकारों से की जाती है, तो स्ट्रिंग का मूल्यांकन टाइप-जुगलिंग के बाद किया जाता है।

<?php var_dump( 0 == "" ); // आउटपुट bool(false) है ?><br />

<?php var_dump( "0" == "" ); // आउटपुट bool(false) है ?><br />

<?php var_dump( 0 == "abc" ); // आउटपुट bool(false) है ?><br />

<?php var_dump( 3 == "3 sparrows" ); // आउटपुट bool(false) है ?><br />

    हालाँकि, अब PHP के नवीनतम संस्करण में, जब किसी संख्या की तुलना एक स्ट्रिंग डेटा-प्रकार से की जाती है, और स्ट्रिंग शाब्दिक (string literal) संख्यात्मक स्ट्रिंग नहीं है, तो संख्या को स्ट्रिंग डेटा-प्रकार में टाइप-कास्ट किया जाता है और फिर तुलना होती है। इसलिए, आपको अपने सीएमएस (CMS) या वेबसाइट को PHP के पुराने संस्करण वाले सर्वर पर होस्ट करते समय अपने PHP कोड का सावधानीपूर्वक परीक्षण (TEST) और EXAMINE करना चाहिए। अन्य तुलना ऑपरेटर स्व-व्याख्यात्मक हैं, और यहां नीचे वर्णित हैं:

<?php var_dump( 5 < "6" ); // से कम ऑपरेटर, आउटपुट bool(true) है ?><br />

<?php var_dump( 6 > "4" ); // से अधिक ऑपरेटर, आउटपुट bool(true) है ?><br />

<?php var_dump( 5 <= "6" ); // से कम या उसके बराबर ऑपरेटर, आउटपुट bool(true) है ?><br />

<?php var_dump( 6 >= "4" ); // से अधिक या उसके बराबर ऑपरेटर, आउटपुट bool(true) है ?><br />

<?php var_dump( 6 <> 4 ); // से कम या अधिक (बराबर नहीं) ऑपरेटर, आउटपुट bool(true) है ?><br />

<?php var_dump( 6 <=> 4 ); // स्पेसशिप ऑपरेटर, आउटपुट int(1) है ?><br />

<?php var_dump( 6 <=> 6 ); // स्पेसशिप ऑपरेटर, आउटपुट int(0) है ?><br />

<?php var_dump( 4 <=> 6 ); // स्पेसशिप ऑपरेटर, आउटपुट int(-1) है ?><br />

<?php var_dump( [] == "" ); // आउटपुट bool(false) है ?><br />

ऑपरेटर वरीयता और साहचर्य

    निम्न तालिका में शीर्ष पर उच्च स्तर की प्राथमिकता वाले ऑपरेटरों को दिखाया गया है और इन ऑपरेटरों के नीचे निम्न स्तर की प्राथमिकता वाले ऑपरेटरों को दर्शाया है। इसका मतलब है कि ** (एक्सपोनेंट) ऑपरेटर की अन्य ऑपरेटरों की तुलना में उच्च प्राथमिकता है। क्या आपको स्कूल से बुनियादी अंकगणित याद है? ये उन्हीं की तरह काम करते हैं।

अंकगणितीय आपरेटर

उदाहरणनामपरिणाम
+$aपहचान (Identity)
(unary)
$a को int या फ़्लोट में उपयुक्त के रूप में परिवर्तित करना ।
-$aनकार (Negation)
(unary)
$a के विपरीत ।
$a + $bजोड़ना$a और $b का योग ।
$a - $bघटाव$a और $b का अंतर ।
$a * $bगुणा$a और $b का गुणा ।
$a / $bविभाजन$a और $b का भागफल ।
$a % $bसापेक्ष (Modulo)$a के शेष भाग को $b से विभाजित किया जाता है ।
$a ** $bघातांक (Exponen­tiation)$a को $b'वें घात तक बढ़ाने का परिणाम ।

    यूनरी (unary) + (पहचान Identity) और - (निषेध Negation) किसी भी चर नाम या शाब्दिक (literal) के लिए उपसर्ग (prefix) हैं। साथ ही, ++ वृद्धि (increment) और -- कमी (decrement) किसी भी वेरिएबल नाम या लिटरल के लिए प्रीफ़िक्स (prefix) या पोस्टफ़िक्स (postfix) हो सकते हैं। वृद्धि और कमी ऑपरेटरों का उपयोग क्रमशः एक चर नाम के मान को 1 (एक) से बढ़ाने या घटाने के लिए किया जाता है।

संबद्धता (Asso­ciat­ivity)ऑपरेटर्सअतिरिक्त जानकारी
(N/A)clone newक्लोन और नया
दाएं **अंकगणित
(N/A)+ - ++ -- ~ (int) (float) (string) (array) (object) (bool) @अंकगणित (यूनरी + और -), वृद्धि / कमी, बिटवाइज़, टाइप कास्टिंग और त्रुटि नियंत्रण
बाएंinstanceofप्रकार
(N/A)!तार्किक
बाएं* / %अंकगणित
बाएं+ - .अंकगणित (बाइनरी +और -), सरणी और स्ट्रिंग (. PHP 8.0.0 से पहले)
बाएं<< >>बिटवाइज़
बाएं.स्ट्रिंग (PHP 8.0.0 के अनुसार)
गैर साहचर्य< <= > >=तुलना
गैर साहचर्य== != === !== <> <=>तुलना
बाएं&बिटवाइज़ और संदर्भ
बाएं^बिटवाइज़
बाएं|बिटवाइज़
बाएं&&तार्किक
बाएं||तार्किक
दाएं ??शून्य संमिलन (null coalescing)
गैर साहचर्य? :टर्नरी (PHP 8.0.0 से पहले बाएं सहयोगी)
दाएं = += -= *= **= /= .= %= &= |= ^= <<= >>= ??=असाइनमेंट (assignment)
(N/A)yield fromसे उपज (yield from)
(N/A)yieldउपज (yield)
(N/A)printप्रिन्ट (print)
बाएंandतार्किक
बाएंxorतार्किक
बाएंorतार्किक

Leave a Comment: