PHP में ऑपरेटर = बनाम ==

मैं एक पुस्तक से मूल PHP सीख रहा हूं, और जो मैंने पढ़ा है, = एक असाइनमेंट ऑपरेटर है, और == एक तुलना ऑपरेटर है। इसलिए...

$x = 5;
$x == 5: true

...समझ में आता है। हालांकि, पुस्तक एक उदाहरण देता है जो मुझे भ्रमित करती है:

if (++$x == 10)
    echo $x;

क्यों ==? क्या हम यह कहने की कोशिश नहीं कर रहे हैं कि "अगर ++ $ x बराबर 10 है, तो $ x गूंजें" ...? फिर ऐसा लगता है: अगर (++ $ x = 10)। पूर्व एक सशर्त बयान के अंदर एक प्रश्न पूछना होगा, जो अजीब या अनावश्यक होगा।

0
If-statement मूल रूप से पढ़ रहा है "अगर हम $ x (स्थायी रूप से) बढ़ाते हैं और नया मान 10 के बराबर होता है, तो $ x " गूंजना, लेकिन मान्य।
जोड़ा लेखक Chris Forrence, स्रोत

6 उत्तर

== means equality, so the conditional reads as:

If pre-incremented $x equals 10, echo $x

एकल = असाइनमेंट है, जहां एक चर को मान रखने के लिए सेट किया गया है:

$word = 'hello';
$number = 5;
// etc.

echo "I said $word $number times!";

वृद्धि opperators के बारे में:

जब आप PHP (और/या अन्य भाषाओं) सीखते हैं तो आपको ++ $ x और $ i - जैसी चीज़ें दिखाई देगी। ये वृद्धि/कमी ऑपरेटर हैं। जहां वे चल रहे वेरिएबल के संबंध में स्थित हैं महत्वपूर्ण है।

यदि उन्हें पहले चर रखा गया है, जैसे ++ $ x , यह पूर्व-वृद्धि/कमी है। इसका मतलब यह है कि ऑपरेशन को चर के लिए कुछ भी करने से पहले किया जाता है। यदि इसे बाद रखा गया है, जैसे $ x ++ , यह पोस्ट-वृद्धि/कमी है, और इसका मतलब है कि ऑपरेशन बाद में किया जाता है।

एक उदाहरण स्क्रिप्ट में देखना सबसे आसान है:

$x = 5;

echo ++$x;//6
echo $x++;//ALSO 6
echo $x;//NOW 7
0
जोड़ा
शायद यह बताना चाहते हैं कि पूर्व-वृद्धि मान क्या है। अन्यथा यह किसी को कम/ज्ञान के साथ भ्रमित करने जैसा है
जोड़ा लेखक Jonathan Kuhn, स्रोत

वाक्यविन्यास = असाइनमेंट है:

$Var = "String";//$Var is now set to contain "string"

जहाँ तक

== is a comparison operator:

if ($Var == "Value){
 //Since var is set to "string", the comparison fails

}

आपका उदाहरण:

if (++$x == 10){

}

ऐसा करने जैसा ही है:

 $i = 0;
 while ($i < $x){
  if ($x == 10){
   break;
  }
   ++$x;
 }
0
जोड़ा

हम सशर्त वक्तव्य में हमेशा प्रश्न पूछते हैं, और इस पर कार्य करते हैं कि परिणाम सही है या गलत है। यदि आपने ++ $ x = 10 कहा है, तो आप कहेंगे "एक्स में एक जोड़ें, और उसके बाद X का मान 10 होना चाहिए।" इसके बजाय आप जानना चाहते हैं कि अगर हम एक्स में एक जोड़ते हैं तो यह 10 के बराबर है।

= का मतलब है बाईं तरफ अभिव्यक्ति को दाएं मूल्य के रूप में सेट करें == का मतलब है कि मुझे सही बताएं यदि बाईं ओर की अभिव्यक्ति दाईं ओर मान के समान है

0
जोड़ा

++$x is executed before the condition itself is evalutated, so this condition would be true:

$x = 9;
if (++$x == 10) {
    //this is executed
}

इसका उपयोग बहुत छोटा <कोड> जबकि loops बनाने के लिए किया जा सकता है:

// Count from 1 to 10
$i = 0
while ($i <= 10) {
    echo ++$i;
}

$ i ++ और ++ $ i के बीच का अंतर वृद्धि और मूल्यांकन का क्रम है:

// Count from 0 to 9
$i = 0
while ($i <= 10) {
    echo $i++;
}
0
जोड़ा

मैं एक कथन के भीतर एक चर को बढ़ाने/घटाने की अनुशंसा नहीं करता ... यह कोड पठनीयता के लिए अच्छा नहीं है। किसी भी मामले में, आप अभी भी तुलना कर रहे हैं, आप बस एक्स के मूल्य में वृद्धि कर रहे हैं।

इस तरह से विचार करें:

if((++$x) == 10) 

आपके पास '==' के बाईं ओर एक अभिव्यक्ति है, जिसे आप दाईं तरफ एक अभिव्यक्ति की तुलना कर रहे हैं। ++ $ x का मूल्यांकन पहले किया जाता है, उसके परिणाम की तुलना 10 से की जाती है।

0
जोड़ा
हालांकि loops के लिए ग्रेट । उसे ले लो। Haha।
जोड़ा लेखक Gant, स्रोत

पुस्तक क्या कहती है: यदि कोई चर 10 पर सत्य है तो वैरिएबल आउट लिखें। if कथन का मूल्यांकन करता है कि स्थिति सही है या गलत है .. तो

   if ($x == 10) 

जैसा कि चेक किया गया है उतना ही सच है:

   $x = 9
   if (++$x == 10)
0
जोड़ा