gettype() Function
gettype() Function PHP में Defined एक Built-In Function है, जो उस Identifier के Data Type को Return करता है, जिसे हम Argument के रूप में इस Function में Pass करते हैं।
पिछले प्रोग्राम के Output के रूप में हम देख सकते हैं कि इस Statement के Execute होने तक $test Variable एक Integer Variable होता है।
Next Statement में हमने इसी $test नाम के Variable का मान Integer की Maximum Range में 1 जोड कर Integer को निम्नानुसार Overflow कर दिया हैः
$test = PHP_INT_MAX + 1;
print “\n\nThe Overflowed Size of Integer: ” . $test;
अब जब ये Lines Interpret होती हैं, तब हमें निम्नानुसार Output प्राप्त होता हैः
The Overflowed Size of Integer: 2147483648
हम देख सकते हैं कि हमारे Output का मान अब 1 बढ चुका है जो कि Integer की Maximum Range से बाहर है और इस मान को Hold करने के लिए Variable का double Type का होना जरूरी है। इसलिए निम्नानुसार अगली Line के Code में हमने फिर से $test Variable के Type को Test किया हैः
print “\nNow the Type of test Variable : ” . gettype($test);
जब ये Line Interpret होता है, तब हमें निम्नानुसार Output प्राप्त होता हैः
Now the Type of test Variable : double
हम देख सकते हैं कि अब $test नाम का हमारा Variable, जो कि पहले Integer था, अब Double Type में Convert हो चुका है
settype() Function
PHP हमें settype() नाम का एक और Function Provide करता है, जिसका प्रयोग करके हम किसी Variable के Data Type को Change कर सकते हैं। फलस्वरूप ये जानने के लिए कि यदि हम इस Double Type में Convert हो चुके Variable को फिर से Integer में Convert कर दें, तो इसमें क्या मान रहेगा, हमने निम्न Statement Use कियाः
settype($test, “integer”);
print “\n\nThe Overflowed Size of Integer: ” . $test;
जब ये Line Run होता है तब हमें निम्न Output प्राप्त होता हैः
The Overflowed Size of Integer: -2147483648
ये Confirm करने के लिए कि $test वास्तव में Integer Type में Convert हुआ या नहीं, हमने हमारी Script का अन्तिम Statement लिखा जो कि निम्नानुसार हैः
print “\nNow the Type of test Variable : ” . gettype($test);
और इसके निम्नानुसार Output को देखकर हम समझ सकते हैं कि हमारा $test नाम का Variable फिर से Integer Type में Convert हो चुका हैः
Now the Type of test Variable : integer
अब सवाल ये है कि जब हमने एक Double प्रकार के Variable के मान को Integer प्रकार के मान में Convert किया, तो उस Variable का मान Negative क्यों हो गया। जवाब ये है कि सभी अन्य Programming Languages की तरह ही PHP के Data Variables भी Memory में Values को Store करते हैं और Memory में Values Binary Form में Save रहती है।
चूंकि, हमारे Computer पर Integer की Size 4 Byte है जो कि 32-Bit के बराबर है क्योंकि 1 Byte में 8-Bit होते हैं, इसलिए जब किसी Integer के Left Most Bit को छोडकर सभी Bits में निम्नानुसार True यानी 1 Stored होता है, तब Integer की Highest Positive Range Represent होती हैः
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
लेकिन जैसे ही हम इस मान में 1 और जोडते हैं, इस Binary Digits का Pattern निम्नानुसार हो जाता हैः
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
चूंकि Binary Digits के Pattern में Left Most Bit का मान 1 होने पर संख्या Negative हो जाती है, क्योंकि ये Bit Sign Bit होता है। फलस्वरूप हमें उपरोक्त Negative संख्या प्राप्त होती है, जो कि किसी भी 32-Integer की Lowest Negative Range को Represent करती है। अब यदि हम इस Binary Digits के Patterns को Decimal Number में Convert करें, तो हमें वही Negative संख्या प्राप्त होती है, जो प्राप्त हो रही है। यानी -2147483648 (gettype and settype in PHP)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
PHP in Hindi | Page: 647 | Format: PDF