PHP Arithmetical Operators: Too different than other languages

PHP Arithmetical Operators: विभिन्न प्रकार की Arithmetical Operations को Perform करने के लिए PHP में 5 Arithmetic Operators Define किए गए हैं, जो निम्नानुसार हैं:

Operator Name and Working Example
+ Addition 10 + 3         //Result : 13
Subtraction 10 – 3         //Result : 7
* Multiplication 10 * 3         //Result : 30
/ Division 10 / 3          //Result : 3
% Modulus / Reminder 10 / 3          //Result : 1

उपरोक्त सभी Arithmetical Operators को हम एक निम्नानुसार एक PHP Script में Use करके दो संख्‍याओं के साथ विभिन्न प्रकार की Arithmetical Calculations Perform कर सकते हैं:

<?php	
	$num1 = 10;
	$num2 = 3;
	
	print "Add = " . ($num1 + $num2) . "\n";
	print "Sub = " . ($num1 - $num2) . "\n";
	print "Mul = " . $num1 * $num2 . "\n";
	print "Div = " . $num1 / $num2 . "\n";
	print "Rem = " . $num1 % $num2 . "\n";
?>

//Output:
 Add = 13
 Sub = 7
 Mul = 30
 Div = 3.3333333333333
 Rem = 1

उपरोक्त Code में हमने Addition व Subtraction के Codes को एक कोष्‍ठक में Enclose किया है। ऐसा करने का कारण ये है कि जैसाकि हमने पहले भी कहा है कि PHP स्वयं अपने स्तर पर विभिन्न प्रकार की Type Casting करता है और PHP में हम + Operators को String जोडने के लिए भी Use किया जा सकता है। परिणामस्वरूप यदि हम उपरोक्त Statement में से कोष्‍टठक को Remove कर दें, तो हमें उपरोक्त Output के स्थान पर निम्न Output प्राप्त होता हैः

//Output:
 3
 -3
 Mul = 30
 Div = 3.3333333333333
 Rem = 1

उपरोक्त Output में हम देख सकते हैं कि हमें AdditionSubtraction का Output बिल्कुल ही गलत प्राप्त हो रहा है। ऐसा इसलिए होता है क्योंकि जब उपरोक्त PHP Code की निम्न Line Interpret होती हैः

print “Add = ” . $num1 + $num2 . “\n”;

तब PHP चूंकि Left to Right Run होता है, इसलिए सबसे पहले वह String “Add =” के साथ $num1 की Value 10 को String Format में जोड देता है। परिणाम स्वरूप ये Expression निम्न String बन जाता हैः

print Add = 10″ + $num2 . “\n”;

लेकिन जब + Operator “Add=10” String व $num2 के Integer मान 3 को आपस में जोडता है, तब String “Add = 10” में पहला Character एक Non Numerical Number, Dot या e/E न होने की वजह से इस String को 0 में Convert कर देता है। परिणामस्वरूप उपरोक्त Expression अब निम्न Format में Convert हो जाता हैः

print 0 + $num2 . “\n”;

परिणाम स्वरूप अब “0” का जोड $num2 के मान 3 से होता है और हमें Output में “Add = 13” प्राप्त होने के बजाय केवल 3 प्राप्त होता है। यही प्रक्रिया तब भी Perform होती है, जब हम – Operator को String के साथ Use करते हैं। लेकिन यदि हम इस Expression को निम्न Format में लिखें:

print $num1 + $num2 ” . = Add” . “\n”;

तो हमें हमारा Output निम्नानुसार प्राप्त होता हैः

13= Add

ऐसा इसलिए होता है क्योंकि चूंकि PHP Left to Right Run होता है, इसलिए सबसे पहले PHP उपरोक्त Expression में $num1 व $num2 के मान को आपस में जोड देता है। फलस्वरूप मान 13 Generate होता है, जो String “ = Add” के साथ Concatenate Operator द्वारा एक String Format में जुड कर निम्नानुसार Return होता है।

चलिए, एक और स्थिति पर विचार करते हैं। जब किसी String में पहले कोई Numerical मान होता है और बाद में कोई String होती है और हम उस String Identifier को किसी Numerical Value के साथ + Operator का प्रयोग करके जोडते हैं, तब PHP उस String के Left Most Numbers को तब तक Scan करता है, जब तक कि उसे String प्राप्त नहीं हो जाता और इस Number को वह + Operator के साथ Specified दूसरे Operand में जोड कर Result Return करता है। इसे समझने के लिए निम्न उदाहरण देखते हैं:

<?php	
	$num1 = 10;
	$num2 = 3;

	print $num1 . " and " + $num2 . " = Total\n";
?>

//Output:
	13 = Total

उपरोक्त Code में भी PHP सबसे पहले $num1 के मान को String “ and ” के साथ Concatenate करता है। परिणामस्वरूप निम्न Resultant Expression Generate होता हैः

print 10 and ” + $num2 . ” = Total\n”;

अब हालांकि मान 10 एक String “10 and “ में String Format में Represented है, लेकिन जब + Operator Execute होता है, तब PHP इस String के Left से Scanning शुरू करता है और तब तक Scanning करता है, जब तक कि उसे कोई Digit प्राप्त होती है। चूंकि इस String में 1 व 0 दो Digits हैं, इसलिए PHP इन दोनों Digits को एक Numerical Integer में Convert करके Return कर देता है और द्रोष String को Ignore कर देता है। परिणामस्वरूप उपरोक्त Expression निम्नानुसार Convert हो जाता हैः

print 10 + $num2 . ” = Total\n”;

अब मान 10 Variable $num2 के मान 3 के साथ Arithmetically जुडता है और मान 13 Generate होता है जो कि Concatenate Operator के माध्यम से String “ = Total” के साथ जुडता है और हमें निम्न Output प्राप्त होता हैः

13 = Total

यानी जब किसी String में पहले Numerical मान हो और हम उस String को + Operator का प्रयोग करके किसी दूसरे Numerical Value वाले Identifier के साथ जोडें, तो PHP उस String से Left To Right में जितने भी Digits होते हैं, उन्हें Integer में Convert करके Return करता है, जबकि यदि String के Left Most Side में Numerical Numbers हो व Numbers के बीच में कहीं पर भी Dot अथवा e/E हो, तो उन Digits को Floating Point Values में Convert करके Return करते हुए सभी अन्य Alphanumerical Characters को Ignore कर देता है, लेकिन यदि String के Left Most Side में कोई Character हो, तो PHP उस पूरी String के स्थान पर 0 Replace कर देता है।

जैसाकि हमने पहले भी कहा कि PHP स्वयं अपने स्तर पर विभिन्न प्रकार की Type Casting करता है, इसलिए यदि हम इन छोटी-छोटी बातों को व PHP के Internal Automatic Behavior को ठीक से न समझें, तो PHP Script में बहुत ही जटिल प्रकार की Bugs Generate हो जाती हैं, जिन्हें Debug करना लोहे के चने चबाने जैसा हो जाता है।

जब हम किसी Integer मान में किसी दूसरे Integer मान का भाग देते हैं, तो PHP केवल Integer मान ही Return करेगा, ऐसा जरूरी नहीं होता, जैसा कि “C” व “C++” में होता है। बल्कि PHP किसी भी प्रकार के Value Loss को रोकने के लिए किसी Integer मान को जरूरत के अनुसार Floating Point Value के रूप में भी Return कर सकता है।

उदाहरण के लिए उपरोक्त Code में हमने जब $num1 में $num2 का भाग दिया, तो वास्तव में हमने एक Integer में दूसरे Integer का भाग दिया है। लेकिन जैसाकि हम Output में देख सकते हैं कि हमें Integer नहीं बल्कि Double Type का मान प्राप्त हो रहा है। ऐसा इसलिए हो रहा है, क्योंकि यदि हमें केवल Integer मान Return होता, तो $num1/$num2 का मान 3 होता न कि 3.333333… लेकिन PHP जानता है कि Return होने वाला मान एक Pure Integer नहीं हो सकता और मान को Pure Integer के रूप में Return करने पर मान 0.333333… का Loss हो जाएगा। इसलिए PHP हमे Integer के स्थान पर Floating Point Value Return कर रहा है।

ज्यादातर Programmers “C” या “C++” Background से होते हैं इसलिए PHP के ज्यादातर Concepts व Syntax उन्हें एक समान ही लगते हैं। परिणामस्वरूप वे बहुत जल्दी इस बात का निर्णय ले लेते हैं कि PHP तो उनके लिए बहुत सरल है। वे बडी ही आसानी से इसे सीख सकते हैं। लेकिन PHP “C” व “C++” के Concepts व Syntaxes से Inspired तो है, लेकिन पूरी तरह से “C” या “C++” की तरह ही काम नहीं करता बल्कि इसके स्वयं के भी कुछ Features हैं। इसलिए भले ही आप “C” “C++” के अच्छे जानकार हों, आपको इस पुस्तक की एक-एक Line को कम से कम एक बार जरूर पढना चाहिए, ताकि आप समझ सकें कि क्या Extra Ordinary है PHP में “C”, “C++”, व जावा की तुलना में।

Expression vs Statement: Simple Clarification
String Operators PHP Example to learn easily

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

PHP in Hindi | Page: 647 | Format: PDF

BUY NOW GET DEMO REVIEWS