PHP-और/या कीवर्ड




conditional (3)

अंतर प्राथमिकता पर है । लेकिन न केवल एक दूसरे के साथ तुलना की!

ज्यादातर मामलों में आपको यह बुरा नहीं लगेगा, लेकिन विशिष्ट मामले हैं जब आपको एक कदम पीछे लेना और बड़ी तस्वीर देखना है। इसे ले लो, उदाहरण के लिए:

// The result of the expression (true && false) is assigned to $g
// Acts like: ($g = (true && false))
$g = true && false;

// The constant true is assigned to $h before the "and" operation occurs
// Acts like: (($h = true) and false)
$h = true and false;

var_dump($g, $h);

यह क्रमशः उत्पादन करेगा:

bool(false)
bool(true)

दूसरे शब्दों में, && की तुलना में अधिक वरीयता है = , जिसकी तुलना में अधिक प्राथमिकता है and जैसा कि http://php.net/manual/en/language.operators.precedence.php में बताया गया है। (यह अन्य उत्तरों में उल्लिखित है, लेकिन मुझे लगता है कि यह विस्तार से लायक है, क्योंकि एक दुरुपयोग तार्किक त्रुटियों का कारण बन सकता है)

मुझे उम्मीद है कि यह आपकी मदद कर सकता है। आप http://php.net/manual/en/language.operators.logical.php पर और अधिक पा सकते हैं

"और" जैसा ही है, और है || PHP में "या" जैसा ही है?

मैंने कुछ परीक्षण किए हैं, और ऐसा लगता है कि वे वही व्यवहार करते हैं। क्या कोई अंतर है?

यदि नहीं, तो क्या कोई अन्य PHP संकेत हैं जिनमें शब्द समकक्ष हैं और क्या आपको लगता है कि यह कोड को पढ़ने में आसान बनाता है?


मुझे परेशान करता है:

echo (false and false ? true : true);
// (empty/false)

आपको लगता है कि "1" (सत्य) का केवल संभावित आउटपुट है क्योंकि कोई ऐसा मामला नहीं है जो झूठी आउटपुट कर सके ... ... लेकिन यह "" (गलत) होगा।

इस मामले में ऑपरेटर के रूप में && का उपयोग कम से कम मेरी अपेक्षाओं को प्रमाणित करता है:

echo (false && false ? true : true);
// 1

तो, कुछ मामलों में उपयोग महत्वपूर्ण मायने रखता है।


and और && और || तुलना में अधिक निम्न प्राथमिकता है । अधिक सटीक और && और || असाइनमेंट ऑपरेटर ( = ) की तुलना में अधिक प्राथमिकता है जबकि and कम है।

http://www.php.net/manual/en/language.operators.precedence.php

आम तौर पर इससे कोई फर्क नहीं पड़ता है, लेकिन ऐसे मामले हैं जब इस अंतर के बारे में नहीं जानते कुछ अप्रत्याशित व्यवहार हो सकते हैं। यहां उदाहरण देखें:

http://php.net/manual/en/language.operators.logical.php





conditional