में ऑपरेटर प्राथमिकता को समझना मेरे पास उत्पादन में निम्न कोड है जो एक अनंत लूप का कारण बनता प्रतीत होता है।PHP
$z=1;
while (!$apns = $this->getApns($streamContext) && $z < 11)
{
myerror_log("unable to conncect to apple. sleep for 2 seconds and try again");
$z++;
sleep(2);
}
पूर्वता नियम कैसे लागू किया जा रहा है कि इस व्यवहार का कारण?
http://php.net/manual/en/language.operators.precedence.php
मैं डॉक्स में इस नोट को देखें:
= यद्यपि अधिकांश अन्य ऑपरेटरों की तुलना में कम पूर्वता है, पीएचपी अभी भी निम्न के समान भाव की अनुमति देगा: अगर ($ एक = foo()), में जो मामला foo() का वापसी मान $ ए में डाल दिया जाता है।
जो मुझे लगता है कि = पहले मूल्यांकन किया जाना चाहिए। फिर ! तो & &, जो एक अनंत लूप का कारण नहीं बनता है।
क्या आप का उपयोग करने के 'मतलब ==' (तुलना) के बजाय ' = '(असाइनमेंट) आपके लूप लूप में? – vimist
नहीं, यह कथन वास्तव में इसका मतलब है कि' = 'के बाईं ओर'! 'मान्य है।' && 'अभी भी असाइन किए जाने वाले मान का हिस्सा है। – Dave
भी: नहीं। बीएडी। इस तरह कोड न करें। यह घृणास्पद है। – Dave