2009-10-05 10 views
12

मैं एक समस्या का निवारण करने और समझने के लिए इस अगर बयान कह रहा है की जरूरत करने के लिए प्रयास कर रहा हूँ:एक PHP अगर एक बराबर चिह्न के साथ कथन ...? इसका क्या मतलब है?

if ($confirmation = $payment_modules->confirmation()) { 

सभी संसाधनों मैं पा सकते हैं पर ही दिखाई देते डबल बराबर संकेत के साथ बयान, एकल नहीं। क्या यह एक php के shorthand रूपों में से एक है अगर? यह क्या कर रहा हैं?

(यदि यह वास्तव में गलत वाक्यविन्यास है, तो इसे दोहरे बराबर चिह्न में बदलना समस्या का समाधान नहीं करता है। जैसा कि, कुछ स्थितियों में यह सच हो जाता है। परिदृश्य में मैं समस्या निवारण कर रहा हूं, यह वापस नहीं आता है जब तक मैं ब्राउज़र को रीफ्रेश नहीं करता तब तक सच।)

किसी भी मदद की बहुत सराहना की जाती है !!!

+0

आपके सभी के लिए तेज़ी से तेज़ प्रतिक्रियाओं के लिए धन्यवाद !!! वाह, मैं आपको यह नहीं बता सकता कि निराशा के ढेर के बीच में त्वरित और सहायक जवाब प्राप्त करना कितना ताज़ा है! मैंने उन लोगों पर नीचे टिप्पणी की है जिन्हें मैंने अभी तक उपयोग किया है। धन्यवाद! – FrustratedPHPnovice

उत्तर

17

के लिए समानता करेंगे यह आशुलिपि का एक रूप है, जो वास्तव में इस के बराबर है है:

$confirmation = $payment_modules->confirmation(); 
if ($confirmation) { 

} 
+0

बिल्कुल सही, धन्यवाद! मैं समझ सकता हूँ! अब यह पता लगाने के लिए कि क्यों $ pay_modules-> पुष्टिकरण() ब्राउज़र खाली होने के बाद खाली है ... – FrustratedPHPnovice

+0

@FrustratedPHPnovice इसे स्वीकार करने के लिए इस उत्तर के बगल में स्थित चेकमार्क पर क्लिक करें –

+0

हाँ! ;) hehehe – nickf

0

= का मतलब असाइनमेंट ($ ए = 1), == तुलना के लिए है (सत्य == झूठी झूठी है)। मुझे लगता है कि आपके उदाहरण में इसे = का उपयोग करना चाहिए क्योंकि यह इसे पुष्टिकरण के वापसी मूल्य को असाइन करता है, जो कि सत्य का मूल्यांकन करने वाला कुछ होना चाहिए।

एक var_dump कर प्रयास करें:

var_dump($payment_modules->confirmation()); 

देखें क्या बूलियन इसे करने के लिए मूल्यांकन करता है, और वहाँ से आप निवारण कर सकते हैं। यदि आप अधिक सहायता चाहते हैं तो अधिक कोड पोस्ट करें।

class test() { 
    public function confirmation() { return true; } 
} 

$boolean = test::confirmation(); 
var_dump($boolean); 

true

+0

var_dump विचार भी मदद की। ताज़ा करने से पहले यह शून्य है, और रीफ्रेश के बाद सरणी सामग्री से भरा है। आपकी सुपर त्वरित प्रतिक्रिया और अधिक सहायता की पेशकश के लिए धन्यवाद। मुझे यह जानकारी लेने दें और इसके साथ थोड़ा और आगे चलें। – FrustratedPHPnovice

0

कभी कभी लोगों को एक काम करने के लिए और उसके बाद जाँच लें कि काम के माध्यम से चला गया पसंद ठीक है। इसे उन कार्यों के साथ जोड़ें जो असफलता पर झूठी (या समकक्ष) लौटते हैं, और आप एक ही समय में एक असाइनमेंट और चेक कर सकते हैं।

यह समझने के लिए, याद रखें कि असाइनमेंट एक प्रकार की अभिव्यक्ति है, और इसलिए (सभी अभिव्यक्तियों की तरह) वापसी मूल्य है। वह वापसी मान वैरिएबल में जो कुछ भी डालता है उसके बराबर है। यही कारण है कि आप की तरह

a = b = c = 0;

कुछ कर सकते हैं एक ही समय में उन चर के सभी आवंटित करने के लिए है।

7

यह पहले $payment_modules->confirmation() से $confirmation का मान निर्दिष्ट करेगा। = ऑपरेटर $confirmation के नए मान का मूल्यांकन करेगा।

इस लेखन जैसा ही होता है:

$confirmation = $payment_modules->confirmation(); 
if ($confirmation) { 
    // this will get executed if $confirmation is not false, null, or zero 
} 
+3

यह मेटा-अवलोकन का अधिक है, लेकिन क्या यह दिलचस्प नहीं है जब निचले प्रतिनिधि वाले किसी व्यक्ति के पास उच्च प्रतिनिधि वाले किसी व्यक्ति की तुलना में कम वोट होता है, भले ही उत्तर लगभग समान हैं और निचले प्रतिनिधि व्यक्ति ने पहले जवाब दिया है? दिलचस्प सामाजिक घटना सब कुछ है। उस कोड के साथ एक स्पष्ट स्पष्टीकरण के लिए +1। – mrduclaw

4

कोड काम करता है क्योंकि एक काम सौंपा मान देता है, इसलिए यदि $payment_modules->confirmation()true है, $confirmationtrue पर सेट हो जाएगा, और फिर काम true वापस आ जाएगी । false के लिए वही बात।

यही कारण है कि आप a = b = 0 में कई चरों को असाइन करने के लिए कमांड का उपयोग कर सकते हैं। शून्य को b असाइन करता है और वह शून्य देता है। इसलिए, यह a = 0 बन जाता है।और a शून्य प्राप्त करता है और यह उस शून्य को वापस कर देगा, जिसका उपयोग किया जा सकता है या नहीं किया जा सकता है।

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