PHP Type Casting – PHP Type Conversion: अभी तक हमने PHP के Basics को लगभग पूरी तरह से समझ लिया है और अब हम इन Basics को Professional Development के लिए Use कर सकते हैं।
चूंकि किसी भी Professional Development में विभिन्न प्रकार के Data के साथ विभिन्न प्रकार की प्रक्रियाऐं करनी पडती हैं और विभिन्न प्रकार की प्रक्रियाऐं Normal तरीके से सम्पन्न हो सकें, इसके लिए विभिन्न प्रकार के Data Comparisons व Data Conversions करने पडते हैं।
इसलिए इस Section में अब हम विभिन्न प्रकार के Data Types के बीच के आपसी सम्बंध के बारे में जानेंगे और समझने की कोशिश करेंगे कि विभिन्न प्रकार के Data Types जब एक दूसरे के साथ संबंधित होते हैं, तो किस तरह से आपस में मिलकर विभिन्न प्रकार के Results Generate करते हैं। PHP में Allowed विभिन्न Casting Functions निम्नानुसार हैं:

Converting to Boolean
हमने पिछले Sections में विभिन्न प्रकार के कई Functions देखे हैं और लगभग सभी Function किसी न किसी तरह का मान Return करते हैं। ये Functions जो मान Return करते हैं, वे हमेंशा Exact Type के मान Return नहीं करते बल्कि PHP विभिन्न प्रकार के Internal Conversions करने के बाद विभिन्न प्रकार के मानों को Return करता है।
कई बार हमारे पास Boolean Values नहीं होती हैं, फिर भी हमें किसी Value को Boolean Value में Convert करने की जरूरत पडती है, ताकि हम किसी Specific प्रकार की जरूरत को पूरा कर सकें।
इसलिए हमें किसी अन्य प्रकार के Data Type के मान को Boolean मान में Convert करने की जरूरत पडती है। किसी भी Data Type के मान को Boolean Type के मान में Convert करने के लिए हम PHP के (bool) या (boolean) Casting Functions का प्रयोग कर सकते हैं।
ज्यादातर परिस्थितियों में किसी Data को Boolean Type के मान में Convert करना जरूरी नहीं होता, क्योंकि यदि किसी Operator, Function या Control Statement को Boolean Type के मान की जरूरत होती है, तो वह Operator, Function या Control Statement स्वयं ही Type Juggling की प्रक्रिया Apply करके Boolean मान Generate कर लेता है। इस प्रक्रिया को Automatic Type Casting या Implicit Type Casting करना कहते हैं।
लेकिन जब हम Automatic Type Casting पर विश्वास नहीं करते और अपने Data के साथ ज्यादा Strict तरीके से प्रक्रिया करना चाहते हैं, तब हम स्वयं भी किसी Data को (bool) या (boolean) Type Casting Function का प्रयोग करके Manually Boolean Value में Convert करते हैं। इस प्रक्रिया को Manual Type Casting या Explicit Type Casting कहा जाता है।
जब हम किसी Data को Manually Boolean Value में Convert करते हैं, तब निम्न Values को FALSE माना जाता हैः
- Boolean मान false स्वयं False होता है।
- Integer मान 0 को False माना जाता है।
- Floating Point मान 0 को False माना जाता है।
- किसी Empty String (“”) या “0” को False माना जाता है।
- ऐसा Array जिसमें एक भी Element न हो, False माना जाता है।
- ऐसा Object जिसमें एक भी Data Member न हो, False माना जाता है।
- Unset Variable के साथ NULL को False माना जाता है।
किसी Empty Tag से Create होने वाले SimpleXML Object को False माना जाता है।
Boolean के विषय में मुख्य रूप से ध्यान रखने वाली एक बात ये है कि Zero के अलावा PHP में सभी Numerical मानों को True माना जाता है, फिर भले ही वह मान Positive हो अथवा Negative हो। उदाहरण के लिए -1 या -12.32 या 232.4 एक true Boolean Value को Represent करेगा।
इन सभी नियमों के आधार पर हम निम्नानुसार एक Program बना सकते हैं, जो विभिन्न प्रकार के Data Type को Boolean Data Type में Convert करने पर Apply करने वाले नियमों को Represent करता हैः
<?php var_dump((bool) ""); // bool(false) var_dump((bool) 1); // bool(true) var_dump((bool) -2); // bool(true) var_dump((bool) "foo"); // bool(true) var_dump((bool) 2.3e5); // bool(true) var_dump((bool) array(12)); // bool(true) var_dump((bool) array()); // bool(false) var_dump((bool) "false"); // bool(true) ?>
Converting to Integer
सामान्यतः विभिन्न प्रकार की Processing में PHP स्वयं ही विभिन्न प्रकार की Values को जरूरत के आधार पर Internally Integer में Convert कर लेता है। लेकिन फिर भी PHP हमें (int) व (integer) Casting Functions Provide करता है, जिनका प्रयोग करके हम किसी भी प्रकार के Data को Manually Integer Value में Convert कर सकते हैं। साथ ही हम intval() Function का प्रयोग करके भी किसी Data को Integer Data में Convert कर सकते हैं।
Boolean to Integer
जब हम किसी Boolean Value को Integer Value में Convert करते हैं, तो Boolean False Integer 0 में Convert होता है जबकि Boolean True Integer 1 में Convert होता है।
Floating Point Number to Integer
जब हम किसी Float Value को Integer Value में Convert करते हैं, तो Floating Value Round Off होती है। यानी यदि Float Value का मान Integer की Range से ज्यादा हो, तो Integer Conversion के समय Undefined Return होता है।
Float to Integer Conversion के समय हमारे System का Operating System व Computer Architecture काफी महत्वपूर्ण Role Play करता है। क्योंकि 32-Bit व 64-Bit Systems पर होने वाले Float to Integer Conversion में हमेंशा अन्तर होता है।
लेकिन फिर भी जब हम किसी Floating Point Vale को Integer में Convert करते हैं, तो Floating Point Value के दसमलव से पहले वाली Value ही Integer के रूप में Retrun होती है। दसमलव के बाद की Value को PHP द्वारा Ignore कर दिया जाता है।
String to Integer
जब हम किसी String Value को Integer Value में Convert करते हैं, तो Floating Value Round Off होती है। यानी यदि Float Value का मान Integer की Range से ज्यादा हो, तो Integer Conversion के समय Undefined Return होता है।
इन तीन प्रकार के Conversations के अलावा अन्य प्रकार के Data Types का Integer प्रकार के Data Type में Conversions अनुपयोगी व अविच्च्वसनीय होते हैं। इसलिए अन्य प्रकार के Conversions को Manually Perform करने की जरूरत नहीं होती। उदाहरण के लिए Object या Array को Integer में Convert करने का कोई मतलब नहीं है।
Converting to Float
सामान्यतः विभिन्न प्रकार की Processing में PHP स्वयं ही विभिन्न प्रकार की Values को जरूरत के आधार पर Internally Integer में Convert कर लेता है। लेकिन फिर भी PHP हमें (float), (double) व (real) Casting Functions Provide करता है, जिनका प्रयोग करके हम किसी भी प्रकार के Data को Manually Integer Value में Convert कर सकते हैं। साथ ही हम intval() Function का प्रयोग करके भी किसी Data को Integer Data में Convert कर सकते हैं।
String Conversion to Numbers
जब कोई String Numeric Context में Evaluate होता है, तो Resultant Value निम्न नियमों के आधार पर तय होती हैः
यदि String में “.”, “e” या “E” में से कोई भी Character न हो और यदि String Integer की Range (PHP_INT_MAX) में समा सकता हो, तो वह String एक Integer की तरह Evaluate होती है, जबकि अन्य सभी स्थितियों में वह String Float की तरह Evaluate होती है।
यदि String किसी Valid Numerical Data से Start होती है, तो वह Numerical Value ही Conversion में Use होती है अन्यथा String की Value 0 होती है। Valid Numerical Data में Sign का चिन्ह एक या एक से ज्यादा Digits अथवा Decimal के साथ Specified होता है, जिसमें घातांक को Represent करने के लिए “e” या “E” होता है।
इन Conversions को हम निम्न Program द्वारा समझ सकते हैं:
<?php var_dump(1 + "10.5"); // float(11.5) var_dump(1 + "-1.3e3"); // float(-1299) var_dump(1 + "bob-1.3e3"); // int(1) var_dump(1 + "bob3"); // int(1) var_dump(1 + "10 Small Pigs"); // int(11) var_dump(4 + "10.2 Little Piggies"); // float(14.2) var_dump("10.0 pigs " + 1); // float(11) var_dump("10.0 pigs " + 1.0); // float(11) ?>
Converting to String
सामान्यतः विभिन्न प्रकार की Processing में PHP स्वयं ही विभिन्न प्रकार की Values को जरूरत के आधार पर Internally String में Convert कर लेता है। लेकिन फिर भी PHP हमें (string) व strval() Casting Functions Provide करता है, जिनका प्रयोग करके हम किसी भी प्रकार के Data को Manually String Value में Convert कर सकते हैं।
Boolean to String
जब हम किसी Boolean Value को String Value में Convert करते हैं, तो Boolean True String “1” में तथा Boolean False String “” यानी Empty String में Convert हो जाता है।
Integer or Float to String
जब हम किसी Integer or Float Value को String Value में Convert करते हैं, तो ये Numerical Values String Values या Text के रूप में Represent होने लगती हैं लेकिन इनकी Value में Internally कोई परिवर्तन नहीं होता। हालांकि Floating Point Number घातांक रूप में Convert हो जाता है।
Arrays to String
Arrays हमेंशा String में Convert हो जाते हैं, क्योंकि Echo या Print जैसे Statements किसी Array की Values को Directly String में Convert नहीं करते। इसलिए किसी Array के मानों को इन Statements के साथ Display करने के लिए हम Array को String Type Casting Function का प्रयोग कर सकते हैं। जैसेः
<?php $arr = array('Raju','Mahohar'); echo (string)$arr[0]; //Output: Raju ?>
Object to String
Objects भी हमेंशा String में Convert हो जाते हैं, जबकि Object की Properties को Display करने के लिए PHP हमें कई अन्य Functions Provide करता है।
Resources to String
Resources भी हमेंशा “Resource id #1” Structure के रूप में String में Convert हो जाते हैं जहां #1 उस Resource का Unique Number है, जिससे Resource को Uniquely Identify व Access किया जा सकता है।
NULL to String
NULL हमेंशा एक Empty String में Convert हो जाता है।
चूंकि किसी Object, Array या Resource को Directly String में Convert करने से कोई उपयोगी Information Return नही होती है, इसलिए सामान्यतः इनकी Information प्राप्त करने के लिए हमें var_dump() या print_r() Functions को Use करना होता है।
Converting to Array
जब हम Integer, Float, String, Boolean और Resource को किसी Array में Convert करने के लिए (array) Casting Function का प्रयोग करते हैं, तो ये सभी Conversion के बाद एक Single Element Array के रूप में Convert हो जाते हैं। यानी हम (array)$scalarValue लिखें या array($scalarValue) लिखें, दोनों का मतलब एक ही होता है।
जब हम किसी Object को Array में Convert करते हैं, तो जो Array Return होता है उस Array के विभिन्न Elements के रूप में Object की विभिन्न Properties होती हैं। जहां Object की विभिन्न Properties उस Array की Key बनती हैं जबकि Object की Properties की Value, Array के Elements की Value बनती हैं। जैसेः
<?php class Time{ private $hour, $minutes; public function __construct($h, $m){ $this->hour = $h; $this->minutes = $m; } } $hmt = new Time(12,22); $arr = (array)$hmt; print_r($arr); ?> //Output: Array ( [ Time hour] => 12 [ Time minutes] => 22 )
Converting to Object
यदि हम किसी Object को किसी दूसरे Object में Convert करते हैं, तो वह Object Modify नहीं होता। लेकिन जब हम किसी अन्य प्रकार की Value को Object Type में Convert करते हैं, तो stdClass जो कि PHP में पहले से बनी हुई एक Built-In Class है, का एक Object Create होता है।
यदि Object के अलावा किसी अन्य Type को Object में Convert करें और उस अन्य Type में Value के रूप में NULL हो, तो Create होने वाला stdClass Object Empty होता है। जैसेः
<?php $obj = (object) 'ciao'; echo $obj->scalar; // outputs 'ciao' ?>
जबकि किसी Array को Object में Convert करते समय Array के Elements Object की एक scalar नाम की Property में Store हो जाते हैं।
<?php $arr = array("a"=>12, "b"=>23); $arr1 = array(11,22,33); print_r((object)$arr); print_r((object)$arr1); ?> //Output stdClass Object ( [a] => 12 [b] => 23 ) stdClass Object ( [0] => 11 [1] => 22 [2] => 33 )
Converting to Resource
चूंकि Resource Variables किसी Opened File, Database Connection, Image Canvas Areas Type के Resources के Handle को Hold करता है, इसलिए इस प्रकार के मानों को Convert करने का कोई मतलब नहीं होता।
Converting to NULL
जब हम किसी Variable को NULL Set करना चाहते हैं यानी Variable को NULL में Convert करने के लिए हमें (unset) Type Cast Function को Use करना होता है। जब हम किसी Variable को unset() करते हैं, तो वह Variable Remove हो जाता है और उसकी Value Unset हो जाती है।
Converting to Binary
जब हम किसी Value को Binary Representation में Convert करना चाहते हैं, तब हम उस Value को (binary) Type Cast Function का प्रयोग करके Binary में Convert कर सकते हैं। अथवा String Representation से पहले Character “b” का प्रयोग करके भी हम किसी String की Binary Representation को Return करवा सकते हैं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
PHP in Hindi | Page: 647 | Format: PDF