2016-07-31 4 views
5

के साथ अजीब व्यवहार मुझे 'और' PHP ऑपरेटर के व्यवहार को समझने में परेशानी हो रही है।PHP 'और' ऑपरेटर

$condition1 = true; 
$var2 = "var2"; 
$var3 = "var3"; 

$condition2 = $condition1 and $var2 == $var3; 

if($condition2) 
    echo '$condition1 and $var2 == $var3'; 

आउटपुट::

यहाँ कोड है $ CONDITION1 और $ var2 == $ var3

अब यह स्पष्ट है कि $var2 != $var3 के बाद से, $condition2 झूठी होना चाहिए। इसलिए echo कथन निष्पादित नहीं किया जाना चाहिए, लेकिन यह दूसरी तरफ होता है। क्या कोई मुझे बता सकता है कि इस कोड के साथ क्या गलत है?

+1

'$ condition2 = ($ condition1 == true) && ($ va2 == $ var3);' –

उत्तर

5

के बजाय && का उपयोग करें।

and&& से कम प्राथमिकता है। बयान

$condition2 = $condition1 and $var2 == $var3;

दो चरणों में क्रियान्वित किया बाएं से दाएं है।

1: $condition2 = $condition1 निष्पादित किया गया है। यानी $condition2 अब true है।

2: $var2 == $var3; निष्पादित किया जाता है जो मूल्यांकन करता है लेकिन किसी भी चर के लिए कोई मान निर्दिष्ट नहीं करता है।

3

मुझे लगता है कि यह एक ऑपरेटर प्राथमिकता मुद्दा है। बजाय इस प्रयास करें:

$condition2 = ($condition1 and $var2 == $var3); 

मुझे लगता है कि इस मुद्दे को अपने वर्तमान कोड इस तरह व्याख्या की जाती है वह यह है कि:

($condition2 = $condition1) and ($var2 == $var3) 
+2

ऑपरेटर के लिए http://php.net/manual/en/language.operators.precedence.php देखें प्राथमिकता (इसके बजाय 'n &' 'का उपयोग करने के @ नाद के दृष्टिकोण की पुष्टि भी)। – smarx

2

इस $ CONDITION2 = ($ CONDITION1 और $ var2 == $ var3) का प्रयास करें; या यह एक $ condition2 = ($ condition1 & & $ var2 == $ var3);

संबंधित मुद्दे