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




operators (6)

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

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

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

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

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

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

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


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

<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 के बाद के संस्करण में जोड़ा गया था। तरह मुझे पायथन की याद दिलाता है। मुझे लगता है कि यह और ऑपरेटर के लिए AND && का उपयोग करने के साथ समान है


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


एक का पुराना, एक का नया।

मैनुअल के अनुसार :

$a != $b    Not equal   TRUE if $a is not equal to $b after type juggling.
$a <> $b    Not equal   TRUE if $a is not equal to $b after type juggling.

उपयोग !=

मामूली अंतर: पूर्वता का आदेश भी है। इधर देखो।

<> पहले आता है != पूर्ववर्ती तालिका में, लेकिन वे एक ही बात को पूरा करते हैं।


यह कोई अलग नहीं है, लेकिन मुझे लगता है कि मुझे याद है! = एक बार तेजी से, क्योंकि मैंने एक परीक्षण चलाया और पता चला कि <> वस्तुओं की "भिन्न" विधियों को निष्पादित कर रहा था, जो मैं तुलना कर रहा था, जो "तुलना" से धीमी हो सकती है ”विधियाँ।






operators