php - <> और!=[डुप्लीकेट] में क्या अंतर है




operators (5)

PHP मेनुअल के अनुसार: http://fr.php.net/manual/en/language.operators.comparison.php इससे कोई फ़र्क नहीं पड़ता।

इस सवाल का पहले से ही यहाँ एक जवाब है:

गैर-समानता (बिना जाँच प्रकार) की जाँच करने के लिए PHP में आप ऐसा कर सकते हैं:

if( A != B ) {
    DO SOMETHING;
}

लेकिन आप यह भी कर सकते हैं, जिसका एक ही परिणाम है:

if( A <> B ) {
    DO SOMETHING;
}

क्या कोई अंतर है?

क्या उपयोग करना है != ओवर <> किसी भी तरह से मूल्यांकन को आकार, या रूप में बदल दें?


इसमें कोई फर्क नही है। मुझे लगता है कि <> कुछ ऐसा है जो php के बाद के संस्करण में जोड़ा गया था। तरह मुझे पायथन की याद दिलाता है। मुझे लगता है कि यह और ऑपरेटर के लिए AND && का उपयोग करने के साथ समान है


एक मिनट के लिए दस्तावेज़ भूल जाना, चलो स्रोत कोड की जाँच करें। स्कैनर के साथ शुरू करते हैं (लेक्सर) :

<ST_IN_SCRIPTING>"!="|"<>" {
    return T_IS_NOT_EQUAL;
}

इसलिए वे उसी टोकन को पार्स करते हैं। आइए परसर की जाँच करें:

expr T_IS_NOT_EQUAL expr { zend_do_binary_op(ZEND_IS_NOT_EQUAL, &$$, &$1, &$3 TSRMLS_CC); }

तो हम जानते हैं कि जिस ZEND_IS_NOT_EQUAL निकाल दिया गया है वह ZEND_IS_NOT_EQUAL ...

अब, ऑपरेशन की जाँच करते हैं:

static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
    USE_OPLINE

    zval *result = &EX_T(opline->result.var).tmp_var;

    SAVE_OPLINE();
    ZVAL_BOOL(result, fast_not_equal_function(result,
        opline->op1.zv,
        opline->op2.zv TSRMLS_CC));

    CHECK_EXCEPTION();
    ZEND_VM_NEXT_OPCODE();
}

तो सचमुच कोई अंतर नहीं है। चूंकि वे एक ही टोकन के लिए पार्स करते हैं, इसलिए उनके पास एक ही पूर्वता है (इसलिए डॉक्स या तो गलत हैं या भ्रामक हैं)। चूंकि वे एक ही निष्पादक का उपयोग करते हैं, और opcode दिनचर्या में कोई निर्णय बिंदु नहीं है, इसलिए वे समान कोड निष्पादित करते हैं।

तो हाँ, <> और != 100% विनिमेय हैं, और एक दूसरे के ऊपर उपयोग करने का कोई तकनीकी कारण नहीं है।

उस के साथ कहा, लगातार होने से हासिल करने के लिए कुछ महत्वपूर्ण है। तो मैं बस के साथ चिपके रहने की सिफारिश != और इसके साथ किया जा रहा है ...

संपादित करें

मैंने इसे दर्शाने के लिए डॉक्स अपडेट किया है, और पूर्ववर्ती आदेश के साथ एक और मुद्दा तय किया (++ और - कास्टिंग के रूप में एक ही पूर्वता है)। इसे docs.php.net पर docs.php.net


जैसा कि php.net/manual/en/language.operators.comparison.php उल्लेख किया गया है, <> और != केवल पर्यायवाची शब्द हैं। इसका मतलब है कि वे पूरी तरह से विनिमेय हैं। Php का इतिहास थोड़ा जंगली है, इसलिए नामकरण परंपराएं, यहां तक ​​कि इस बात के लिए भी कि ऑपरेटरों को कैसे बुलाया जाए, और फिर भी वास्तव में एकीकृत नहीं हैं।


कोई फर्क नहीं।

हालाँकि, != प्रकार की तुलना करने के लिए अतिरिक्त = जोड़ने के लिए अधिक आसानी से सुविधा की अनुमति देता है।





operators