Expression vs Statement: Simple Clarification

Expressions

PHP में जब किसी Code में किसी तरह की Calculation या Logical Operation Perform हो रहा होता है, तो इस प्रकार के Statement को Expression कहा जाता है।

Operand

किसी भी Expression में हमेंशा कम से कम एक Operand व कम से कम एक Operator जरूर होता है। साथ ही PHP का हर Expression एक Statement होता है, लेकिन हर Statement एक Expression भी हो, ऐसा जरूरी नहीं है। उदाहरण के लिए निम्न Statement एक Expression भी है और Statement भीः

            print 10 + 2;

जो Identifier किसी Calculation या Logical Operation में Participate करता है, उस Identifier को Operand कहा जाता है, जबकि किसी Expression में जिस तरह का Operation Perform करना होता है, उस Operation से Associated किसी न किसी Symbol को Expression में Use किया जाता है। Use किए जाने वाले Symbol को Operator कहा जाता है। जैसेः

            print 10 + 2;

इस उदाहरण में मान 10 व 2 Operands हैं जबकि दोनों मानों को जोडने की प्रक्रिया के लिए Specify किया गया “+” का Symbol एक Operator है।

उपरोक्त Statement एक Expression भी है क्योंकि इस Statement में जोडने की प्रक्रिया हो रही है, लेकिन निम्न Statement केवल एक Statement है, Expression नहीं क्योंकि इसमें किसी तरह का कोई Calculation या Logical Operation Perform नहीं हो रहा हैः

            print “Hello World”;

Operators

Operators वे Special Symbols होते हैं जो किसी तरह का Operation Perform करने के लिए PHP Interpreter को Instruct करते हैं और उपयुक्त Result Generate करते हैं। PHP किसी Expression में Specify किए गए विभिन्न प्रकार के Operators के आधार पर विभिन्न प्रकार की Automatic Type Casting करता है।

Type Casting एक ऐसी प्रक्रिया होती है, जिसमें किसी Identifier के मान को जरूरत के आधार पर एक Data Type से किसी दूसरे Data Type के मान में Convert किया जाता है, जो कि सामान्यतः अन्य Programming Languages में नहीं होता।

जब हम PHP में किसी Expression को किसी तरह का Operation Perform करने के लिए Specify करते हैं, तो हमेंशा सही Result Generate करने के लिए PHP विभिन्न प्रकार के Operators को एक निश्चित प्राथमिकता क्रमांक देता है साथ ही Expression के Perform होने की दिशा तय करता है।

सामान्यतः PHP में कुछ Operations Left to Right Perform होते हैं, जबकि कुछ Operators Right to Left Perform होते हैं। इसे Operator की Associativity कहा जाता है। जबकि किसी Expression में Specify किए गए Operators के आधार पर कौनसा Operation पहले Perform होगा और कौनसा बाद में, इस बात को Operators का Precedence कहा जाता है। इन दोनों मूल Concepts को समझने के लिए हम एक उदाहरण देखते हैं। मानलो कि हमारे पास निम्नानुसार एक Expression है, जिसे PHP Solve करेगाः

x = 12 * 10 – ( 10 / 2 ) + 2 / 2 * 3

PHP जब इस Expression को Execute करता है, तब वह निम्नानुसार सारणी के अनुसार Expression में Use किए गए विभिन्न Operators की Precedence व Associativity तय करता हैः

Operator Associativity Purpose
new NA Object instantiation
( ) NA Expression subgrouping
[ ] Right Index enclosure
! ~ ++ — Right Boolean NOT, bitwise NOT, increment, decrement
@ Right Error suppression
/ * % Left Division, multiplication, modulus
+ – . Left Addition, subtraction, concatenation
<< >> Left Shift left, shift right (bitwise)
< <= > >= NA Less than, less than or equal to, greater than, greater than or equal to
== != === <> NA Is equal to, is not equal to, is identical to, is not equal to
& ^ | Left Bitwise AND, bitwise XOR, bitwise OR
&& || Left Boolean AND, Boolean OR
?: Right Ternary operator
= += *= /=
-= %=&= |=
^= <<= >>=
Right Assignment operators
AND XOR OR Left Boolean AND, Boolean XOR, Boolean OR
, Left Expression separation; example: $days = array(1=>”Monday”, 2=>”Tuesday”)

उपरोक्त सारणी में जो Operator पहले Specify किया गया है, उसकी प्राथमिकता ज्यादा है जबकि जो Operator बाद में Specify किया गया है। उसकी प्राथमिकता सबसे कम है। उपरोक्त सारणी के अनुसार new Operator की प्राथमिकता सबसे ज्यादा है जबकि Comma ( , ) Operator की प्राथमिकता सबसे कम है। अब यदि हम समझें कि PHP हमारे Expression को किस तरह से Solve करता है, तो निम्नानुसार समझ सकते हैं:

x = 12 * 10 – ( 10 / 2 ) + 2 / 2 * 3

उपरोक्त Expression में हमने =, *, -, ( ), /+ Operators को Use किया है। अब यदि हम इन Operators की प्राथमिकता को उपरोक्त सारणी के आधार पर Specify करें तो ये सभी Operators निम्न क्रम में Perform होंगेः

( )        Top Level Priority in the above table      Left to Right
* and /    Second Priority as per the above table     Left to Right
- and +    Third Priority as per the above table      Left to Right
=          Lowest Priority as per the above table     Right to Left

एक ध्यान रखने वाली बात ये भी है कि PHP हमेंशा Expressions को Interpret करने की शुरूआत Left to Right Direction में करता है लेकिन यदि किसी Operator की प्राथमिकता अन्य Operator की प्राथमिकता से कम हो, तो पहले उस Operator को Solve करता है, जिसकी प्राथमिकता ज्यादा है।

साथ ही PHP भी अन्य Programming Languages की तरह ही पूरे Expression को एक ही बार में Solve नहीं कर देता, बल्कि टुकडों में Solve करता है। यानी जब उपरोक्त Expression Solve होता है, तब निम्न क्रम Follow होता हैः

x = 12 * 10 – ( 10 / 2 ) + 2 / 2 * 3

हालांकि उपरोक्त Expression में = Operator Left to Right Direction में सबसे पहले आता है, लेकिन इसकी Priority सबसे कम है। इसलिए PHP सबसे पहले = Operator के Right Part को Solve करता है साथ ही हालांकि Left to Right क्रम में * व – Operators पहले आ रहे हैं, लेकिन चूंकि ( ) की Priority सबसे ज्यादा होती है, इसलिए PHP सबसे पहले ( ) के Expression को Solve करता है और हमें निम्नानुसार Result प्राप्त होता हैः

x = 12 * 10 – 5 + 2 / 2 * 3

अब PHP फिर से Expression को Left to Right Check करता है। चूंकि = की प्राथमिकता सबसे कम है, इसलिए PHP इस बार Left to Right Flow होते हुए * Operator को Solve करता है। फलस्वरूप PHP को निम्न Output प्राप्त होता हैः

x = 120 – 5 + 2 / 2 * 3

अब PHP फिर से Expression को Left to Right Evaluate करता है, लेकिन इस Expression में अभी भी / Operator है, जिसकी प्राथमिकता – से ज्यादा होने की वजह से पहले / Operator Solve होता है और PHP को निम्न Output प्राप्त होता हैः

x = 120 – 5 + 1 * 3

PHP फिर से Expression को Left to Right Evaluate करता है, लेकिन / की Priority ज्यादा होने की वजह से इस बार भी – व + से पहले * Operator को Evaluate करता है। फलस्वरूप PHP को निम्न Output प्राप्त होता हैः

x = 120 – 5 + 3

अब इस Expression में – व + केवल दो ही Operators हैं और दोनों ही समान Priority के Operators हैं, फलस्वरूप PHP फिर से Left to Right Evaluate होता है और पहले – Operator को Solve करता है, जिससे PHP को निम्न Output Expression प्राप्त होता हैः

x = 115 + 3

अब PHP + Operator को Solve करता है, जिससे Final Output निम्नानुसार प्राप्त होता हैः

x = 118

अन्त में = Operator Solve होता है। चूंकि = Operator की Priority सबसे कम होने की वजह से सबसे बाद में Solve हो रहा है साथ ही = Operator Right to Left Execute होता है। परिणामस्वरूप मान 118 उस Memory Location पर जाकर Store हो जाता है, जिसका नाम x है।

उपरोक्त Discussion के आधार पर हम समझ सकते हैं कि PHP किस तरह से किसी Expression को टुकडों में Solve करता है और Operator की Precedence व Associativity के आधार पर Final Result Generate करता है। लगभग सभी Programming Languages इसी तरीके से किसी Expression को Solve करते हैं, इसीलिए सभी Programming Languages का Output हमेंशा एक समान ही प्राप्त होता है। इस प्रकार से किसी Operation के Solve होने की प्रक्रिया को Data Structure में Polish Notation कहा जाता है।

PHP में भी अन्य Languages की तरह विभिन्न प्रकार के Operators हैं, जो विभिन्न प्रकार की Arithmetical व Logical Calculations को Perform करते हैं। PHP में विभिन्न प्रकार के Operators को विभिन्न Categories में Divide किया गया है, ताकि हम इन Operators को बेहतर तरीके से समझ सकें व उपयोग में ले सकें। अब हम PHP में Supported विभिन्न प्रकार के Operators को Detail से समझेंगे। (Expression vs Statement)

Variable Variables PHP Way to Pointer of a Pointer
PHP Arithmetical Operators: Too different than other languages

PHP in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

PHP in Hindi | Page: 647 | Format: PDF

BUY NOW GET DEMO REVIEWS