यह ऑपरेटर प्राथमिकता के बारे में नहीं है लेकिन इसके बारे में: ऑपरेटर प्राथमिकता सूची आपको विवरण नहीं बताती (वास्तव में, वे कभी नहीं करते), उदा। बाइसन नियमों और परिणामी पैटर्न मिलान और ढेर को कम करने के बारे में।
var_dump के बिना सादगी के लिए, null != $a = 15;
स्टेटमेंट ले लें।
इस प्रकार पार्सर इस कथन को "देखता है" - या देखता है कि यह एक कथन है।
(मुझे आशा है कि यह हर जगह एक फिक्स-चौड़ाई फ़ॉन्ट साथ गाया जाएगा ...)
null != $a = 15 ;
T_VARIABLE
identifier compound_variable T_LNUMBER
namespace_name reference_variable common_scalar
general_constant base_variable scalar
scalar base_variable_with_functions_calls expr_without_variable
expr_without_variable variable = expr
expr T_IS_NOT_EQUAL \______ expr_without_variable _________/
\__________________ expr ____________________________________________/ ;
\_________________ unticked_statement _______________________________________________/
statement
(आप https://github.com/php/php-src/blob/PHP-5.6.15/Zend/zend_language_parser.y पर नियम भी देख सकते हैं)
में असाइनमेंट ऑपरेटर के लिए कोई विशेष नियम नहीं है ये मामला; पार्सर के बयान से मेल खाने के लिए बस एक और तरीका नहीं है, इसलिए प्राथमिकता लागू नहीं होती है।
निश्चित रूप से अजीब। '$ a == null = 15' भी झूठी डंप देता है। और '(शून्य! = $ ए) = 15' में डालकर एक अप्रत्याशित '=' त्रुटि थूकती है। –
इसे 'शून्य! = ($ A = 15)' के रूप में व्याख्या करने का क्या विकल्प है? '(शून्य! = $ ए) = 15' के साथ आप एक बूलियन मान के लिए मान 15 असाइन करने का प्रयास करेंगे; यह काम नहीं करता है। – VolkerK
@ वोल्करके यह एक उदाहरण है, इस लिपि में कोई वास्तविक जीवन उद्देश्य नहीं है! मेरा प्रतिबिंब इस प्रकार की अभिव्यक्ति से शुरू होता है जो मैं देखता हूं (और उपयोग करता हूं) बहुत कुछ 'अगर (! $ A = foo()) '। –