php - ऑपरेटर के रूप में 'और' बनाम '&&'




coding-style operators (7)

आपके द्वारा कौन सा संस्करण उपयोग किया जा रहा है?

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

'और' से अधिक पढ़ने योग्य है?

क्या यह आपके लिए अधिक पठनीय है । जवाब हां और नहीं है ऑपरेटर के चारों ओर कोड और वास्तव में इसे पढ़ने वाले व्यक्ति सहित कई कारकों के आधार पर!

|| ~ अंतर है?

हाँ। के लिए तार्किक ऑपरेटरों देखें || और ~ लिए bitwise ऑपरेटरों ~

मेरे पास एक कोडबेस है जहां डेवलपर्स ने && और || बजाय AND और OR का उपयोग करने का निर्णय लिया है ।

मुझे पता है कि ऑपरेटर की प्राथमिकता में एक अंतर है ( && पहले and आगे जाता है), लेकिन दिए गए ढांचे के साथ ( PrestaShop सटीक होना) यह स्पष्ट रूप से एक कारण नहीं है।

आपके द्वारा कौन सा संस्करण उपयोग किया जा रहा है? and && से अधिक पठनीय है? या कोई फर्क नहीं पड़ता है?


जिस भाषा का आप उपयोग कर रहे हैं उसके आधार पर, आम तौर पर यह && और || का उपयोग करने के लिए बेहतर अभ्यास है पाइथन जैसी भाषाओं को छोड़कर, and कहां and और इसके बजाय उपयोग किया जाता है और && और || मौजूद नहीं है।


इसका उपयोग कैसे किया जा रहा है, इस पर निर्भर करता है, यह आवश्यक और यहां तक ​​कि आसान भी हो सकता है। http://php.net/manual/en/language.operators.logical.php

// "||" has a greater precedence than "or"

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

// The constant false is assigned to $f and then true is ignored
// Acts like: (($f = false) or true)
$f = false or true;

लेकिन ज्यादातर मामलों में यह एक डेवलपर स्वाद की बात की तरह लगता है, जैसा कि मैंने कोडइग्निटर फ्रेमवर्क में देखा है, जैसा कि मैंने देखा है @ सर्फ्राज़ ने उल्लेख किया है।


चूंकि and इसकी तुलना में कम प्राथमिकता है = आप इसे शर्त असाइनमेंट में उपयोग कर सकते हैं:

if ($var = true && false) // Compare true with false and assign to $var
if ($var = true and false) // Assign true to $var and compare $var to false

मुझे लगता है कि यह स्वाद का विषय है, हालांकि (गलती से) उन्हें मिलाकर कुछ अवांछित व्यवहार हो सकते हैं:

true && false || false; // returns false

true and false || false; // returns true

इसलिए, && और || का उपयोग करना उनके लिए सुरक्षित है क्योंकि उनके पास सबसे ज्यादा प्राथमिकता है। पठनीयता के संबंध में, मैं कहूंगा कि ये ऑपरेटर सार्वभौमिक हैं।

अद्यतन : टिप्पणियों के बारे में कह रहे हैं कि दोनों परिचालन झूठे लौटते हैं ... वास्तव में, उपर्युक्त कोड कुछ भी वापस नहीं करता है, मुझे अस्पष्टता के लिए खेद है। स्पष्टीकरण के लिए: दूसरे मामले में व्यवहार इस बात पर निर्भर करता है कि ऑपरेशन का परिणाम कैसे उपयोग किया जाता है। देखें कि ऑपरेटर की प्राथमिकता यहां कैसे खेलती है:

var_dump(true and false || false); // bool(false)

$a = true and false || false; var_dump($a); // bool(true)

कारण $a === true है क्योंकि किसी भी लॉजिकल ऑपरेटर पर असाइनमेंट ऑपरेटर की प्राथमिकता है, जैसा कि पहले से ही अन्य उत्तरों में बहुत अच्छी तरह से समझाया गया है।


यदि आप AND और OR उपयोग करते हैं, तो आप अंततः इस तरह से कुछ प्राप्त कर लेंगे:

$this = true;
$that = false;

$truthiness = $this and $that;

अनुमान लगाना चाहते हैं कि $truthiness बराबर है?

यदि आपने false कहा ... bzzzt, क्षमा करें, गलत!

ऊपर $truthiness मूल्य true । क्यूं कर? = की तुलना में अधिक प्राथमिकता है। निहित आदेश दिखाने के लिए कोष्ठक के अतिरिक्त यह स्पष्ट बनाता है:

($truthiness = $this) and $that

यदि आपने पहले कोड उदाहरण के बजाय && उपयोग किया है, तो यह अपेक्षा के अनुसार काम करेगा और false

जैसा कि नीचे दी गई टिप्पणियों में चर्चा की गई है, यह सही मूल्य प्राप्त करने के लिए भी काम करता है, क्योंकि ब्रांड्स की तुलना में अधिक प्राथमिकता है:

$truthiness = ($this and $that)

सुरक्षा के लिए, मैं हमेशा अपनी तुलना को संतुलित करता हूं और उन्हें बाहर निकाल देता हूं। इस तरह, मुझे ऑपरेटर प्राथमिकता पर भरोसा नहीं करना है:

if( 
    ((i==0) && (b==2)) 
    || 
    ((c==3) && !(f==5)) 
  )




operators