बिंदु है: एक काम के बाएं हाथ की ओर एक चर हो गया है! आपके उदाहरण में इसे प्राप्त करने का एकमात्र संभावित तरीका पहले असाइनमेंट का मूल्यांकन करना है - जो वास्तव में php करता है।
जोड़ना कोष्टक स्पष्ट करता है, क्या होता है,
'' !== $host = $route->getHost()
// is equal to
'' !== ($host = $route->getHost())
// the other way wouldn't work
// ('' != $host) = $route->getHost()
तो हालत सच है अगर $route->getHost()
की वापसी मान एक गैर रिक्त स्ट्रिंग है और प्रत्येक मामले में, वापसी मान $host
को सौंपा गया है।
इसके अलावा, आप एक एक PHP का grammer
...
variable '=' expr |
variable '=' '&' variable |
variable '=' '&' T_NEW class_name_reference | ...
आप ऑपरेटर precendence manual पेज को ध्यान से पढ़ें, तो आप इस नोटिस
= हालांकि देखना होगा एक कम पूर्वता है देखने के लिए हो सकता था अधिकांश अन्य ऑपरेटरों की तुलना में, PHP अभी भी निम्नलिखित के समान अभिव्यक्तियों की अनुमति देगा: यदि (! $ a = foo()), में जो मामला foo() का वापसी मान $ ए में डाल दिया जाता है।
यह तरीका बचाने करो 'अगर ('' == ($ मेजबान = $ route-> getHost())!) {' कोष्ठक का उपयोग कर से बचने के – JustOnUnderMillions
समस्या .. की [जे एस – scaisEdge
संभावित डुप्लिकेट पीएचपी बनाम: काम लॉजिकल-या के साथ उपयोग किए जाने पर ऑपरेटर प्राथमिकता (http://stackoverflow.com/questions/32672016/js-vs-php-assignment-operator-precedence-when-used-with-logical-or) – ShiraNai7