Please support if you like my work by payment through upi: sinhamit@icici or payment by bank
account name: Amit Kumar Sinha,
account number: 2646728782
IFSC code: KKBK0005660
SWIFT: KKBKINBB
Type Casting in Details in Category: पीएचपी by amit
🕙 Posted on 2023-05-22 at 20:22:55
टाइप कास्टिंग
आपने पिछले पृष्ठों में कुछ टाइप-कास्टिंग देखी है , लेकिन इस पेज में इसका विस्तार से वर्णन किया जाएगा। एक प्रोग्रामर के रूप में, आपको हर संभव विकल्प के बारे में सोचना चाहिए जिसमें उपयोगकर्ता डेटा इनपुट कर सकता है। चूंकि PHP एक ढीली डेटा-टाइप स्क्रिप्टिंग भाषा है, इसलिए आपको हर उस डेटा की सावधानीपूर्वक जांच करनी चाहिए, जिसका आप सामना कर सकते हैं।
बूलियन से अन्य डेटा-प्रकार
जब true को integer
या float
डेटा-प्रकार में टाइप-कास्ट किया जाता है, तो इसे 1
में परिवर्तित कर दिया जाता है। जब false को integer
या float
में टाइप-कास्ट किया जाता है, तो इसे 0
में परिवर्तित कर दिया जाता है।
<?php var_dump( (int) true
); // int(1) ?><br />
<?php var_dump( (int) false
); // int(0) ?><br />
<?php var_dump( (float) true
); // float(1) ?><br />
<?php var_dump( (float) false
); // float(0) ?><br />
जब true और false को (string)
डेटा-प्रकार में टाइप-कास्ट किया जाता है, तो उन्हें क्रमशः "1" और "" (खाली स्ट्रिंग) में बदल दिया जाता है।
<?php var_dump( (string) true
); // string(1) "1" ?><br />
<?php var_dump( (string) false
); // string(0) "" ?><br />
जब true और false को (array)
डेटा-प्रकार में टाइप-कास्ट किया जाता है, तो उन्हें खाली सरणी में पहले आइटम (तत्व) के रूप में जोड़ा जाता है। उन वस्तुओं के मूल्य क्रमशः उन बूलियन मूल्यों के समान हैं।
<?php var_dump( (array) true
); // array(1) { [0] => bool(true) } ?><br />
<?php var_dump( (array) false
); // array(1) { [0] => bool(false) } ?><br />
पूर्णांक (Integer) से अन्य डेटा-प्रकार
पूर्णांक ऋणात्मक, शून्य या धनात्मक संख्या हो सकती है। निम्नलिखित कोड के आउटपुट टिप्पणी में दिखाए गए हैं, जो स्व-व्याख्यात्मक है। जब 0
को (boolean)
डेटा-प्रकार में टाइप-कास्ट किया जाता है, तो आउटपुट false होता है । अन्य सभी मानों को true टाइप-कास्ट किया जाता है।
<?php var_dump( (bool) -5 ); // bool(true) ?><br />
<?php var_dump( (bool) 0 ); // bool(false) ?><br />
<?php var_dump( (bool) -5 ); // bool(true) ?><br />
जब किसी पूर्णांक को फ्लोट या स्ट्रिंग डेटा-प्रकार में टाइप-कास्ट किया जाता है, तो इसका मान समान होता है, जैसा कि नीचे टिप्पणियों में दिखाया गया है। जब 0
को (string)
डेटा-प्रकार में टाइप-कास्ट किया जाता है, तो इसे एक खाली (empty) स्ट्रिंग में बदल दिया जाता है।
<?php var_dump( (float) -3 ); // float(-3) ?><br />
<?php var_dump( (float) 0 ); // float(0) ?><br />
<?php var_dump( (float) 3 ); // float(3) ?><br />
<?php var_dump( (string) -4 ); // string(2) "-4" ?><br />
<?php var_dump( (string) 0 ); // string(0) "" ?><br />
<?php var_dump( (string) +4 ); // string(1) "4" ?><br />
जब किसी पूर्णांक मान को (array)
डेटा-प्रकार में टाइप-कास्ट किया जाता है, तो इसे खाली सरणी के पहले आइटम के रूप में जोड़ा जाता है। आउटपुट टिप्पणियों में दिखाया गया है।
<?php var_dump( (array) -6 ); // array(1) { [0] => int(-6) } ?><br />
<?php var_dump( (array) 0 ); // array(1) { [0] => int(0) } ?><br />
<?php var_dump( (array) +6 ); // array(1) { [0] => int(6) } ?><br />
फ़्लोट (Float) से अन्य डेटा-प्रकार
ऋणात्मक, शून्य, और धनात्मक फ़्लोटिंग पॉइंट संख्याओं के अलावा, आरक्षित कीवर्ड्स, INF
, -INF
, NAN
, M_PI
आदि भी हैं, जो फ़्लोट (float) डेटा-टाइप हैं। इन (पूर्व परिभाषित) स्थिरांकों (constants) की टाइप-कास्टिंग इस प्रकार है:
<?php var_dump( (bool) INF ); // bool(true) ?><br />
<?php var_dump( (bool) -INF ); // bool(true) ?><br />
<?php var_dump( (bool) NAN ); // bool(true) ?><br />
<?php var_dump( (bool) M_PI ); // bool(true) ?><br />
उपरोक्त कोड में, आप देख सकते हैं कि NAN (नॉट ए नंबर) bool(false) के बराबर नहीं है। हालाँकि, जब पूर्व-निर्धारित स्थिरांकों, यानी INF, -INF और NAN को (int)
या (integer)
में टाइप-कास्ट किए जाते हैं, तो उन सभी के मान 0
होते हैं। M_PI स्थिरांक, pi()
फ़ंक्शन का मान है, और इसे (integer)
में टाइप-कास्ट करके 3 (छोटा) कर दिया गया है ।
<?php var_dump( (integer) INF ); // int(0) ?><br />
<?php var_dump( (integer) -INF ); // int(0) ?><br />
<?php var_dump( (integer) NAN ); // int(0) ?><br />
<?php var_dump( (integer) M_PI ); // int(3) ?><br />
<?php var_dump( (string) INF ); // string(3) "INF" ?><br />
<?php var_dump( (string) -INF ); // string(4) "-INF" ?><br />
<?php var_dump( (string) NAN ); // string(3) "NAN" ?><br />
<?php var_dump( (string) M_PI ); // string(15) "3.1415926535898" ?><br />
<?php var_dump( (array) INF ); // array(1) { [0] => float(INF) } ?><br />
<?php var_dump( (array) -INF ); // array(1) { [0] => float(-INF) } ?><br />
<?php var_dump( (array) NAN ); // array(1) { [0] => float(NAN) } ?><br />
<?php var_dump( (array) M_PI ); // array(1) { [0] => float(3.141592653589793) } ?><br />
आप उपरोक्त कोड में देख सकते हैं कि जब इन पूर्व-निर्धारित स्थिरांकों को (array)
डेटा-प्रकार में टाइप-कास्ट किया जाता है, तो ये फ़्लोटिंग पॉइंट नंबर एक खाली सरणी में पहले आइटम के रूप में जोड़े जाते हैं।
सभी फ़्लोटिंग पॉइंट नंबर (पूर्व-परिभाषित स्थिरांक को छोड़कर), यानी, नकारात्मक, शून्य और सकारात्मक फ़्लोटिंग पॉइंट नंबर पूर्णांक (integers) की तरह व्यवहार करते हैं, सिवाय इसके कि जब वे (integer)
में टाइप-कास्ट किए जाते हैं, भिन्नात्मक (fractional) भाग (दशमलव बिंदु/
स्ट्रिंग्स से अन्य डेटा-प्रकार
स्ट्रिंग्स को अलग-अलग मानों के रूप में वर्गीकृत किया जा सकता है, उदाहरण के लिए, ""
(खाली स्ट्रिंग, इसके भीतर कोई रिक्त स्थान के बिना), "+12.4"
(संख्यात्मक स्ट्रिंग, या तो signed या unsigned, अंडरस्कोर प्रतीकों के बिना), और "false"
(गैर-संख्यात्मक स्ट्रिंग, सिंगल/
<?php var_dump( (bool) "" ); // bool(false) ?><br />
<?php var_dump( (bool) "-1.2" ); // bool(true) ?><br />
<?php var_dump( (bool) "false" ); // bool(true) ?><br />
<?php var_dump( (int) "" ); // int(0) ?><br />
<?php var_dump( (int) "-12.5" ); // int(-12) ?><br />
<?php var_dump( (int) "INF" ); // int(0) ?><br />
<?php var_dump( (float) "" ); // float(0) ?><br />
<?php var_dump( (float) "-12.5" ); // float(-12.5) ?><br />
<?php var_dump( (float) "INF" ); // float(0) ?><br />
<?php var_dump( (array) "" ); // Array (1) { [0] => string(0) "" } ?><br />
<?php var_dump( (array) "-12.5" ); // Array (1) { [0] => string(5) "-12.5" } ?><br />
<?php var_dump( (array) "INF" ); // Array (1) { [0] => string(3) "INF" } ?><br />
आप स्ट्रिंग डेटा-प्रकार से अन्य डेटा-प्रकार और इसके विपरीत अधिक टाइप-कास्टिंग देखने के लिए पिछले पृष्ठ पर जा सकते हैं।
सरणी (Array) से अन्य डेटा-प्रकार
अन्य डेटा-प्रकारों में टाइप-कास्टिंग के उद्देश्य से एरेज़ (arrays) को खाली (empty) एरे या गैर-खाली (not empty) एरे में वर्गीकृत किया जा सकता है। एरेज़ को (string)
डेटा-टाइप में टाइप-कास्ट नहीं किया जा सकता है। एक सरणी को एक स्ट्रिंग में रूपांतरण implode() फ़ंक्शन के साथ किया जा सकता है । इसी तरह, एक स्ट्रिंग (कुछ विभाजक के साथ) को explode() फ़ंक्शन के साथ एक सरणी में परिवर्तित किया जा सकता है।
<?php var_dump( (bool) []
); // bool(false) ?><br />
<?php var_dump( (int) []
); // int(0) ?><br />
<?php var_dump( (float) []
); // float(0) ?><br />
<?php var_dump( (string) []
); // shows ERROR as shown below ?><br />
Warning: Array to string conversion in C:\xampp\
string(5) "Array"
<?php var_dump( (bool) [ false ]
); // bool(true) ?><br />
<?php var_dump( (int) [ 0 ]
); // int(1) ?><br />
<?php var_dump( (float) [ 1.2 ]
); // float(1) ?><br />
<?php var_dump( (string) [ "" ]
); // shows ERROR as shown below ?><br />
Warning: Array to string conversion in C:\xampp\
string(5) "Array"
<?php var_dump( (bool)
[ false, true, null ] ); // कोई फर्क नहीं पड़ता कि सरणी के अंदर कितने आइटम हैं, आउटपुट bool(true) है ?><br />
<?php var_dump( (int)
[ 23, 34, true, 6534 ] ); // कोई फर्क नहीं पड़ता कि सरणी के अंदर कितने आइटम हैं, आउटपुट int(1) है ?><br />
<?php var_dump( (float)
[ 1.2, false, 234, 34.32 ] ); // कोई फर्क नहीं पड़ता कि सरणी के अंदर कितने आइटम हैं, आउटपुट float(1) है ?><br />
NULL से अन्य डेटा-प्रकार
null
अन्य डेटा-प्रकारों में टाइप-कास्ट किया जा सकता है। हालाँकि, अन्य डेटा-प्रकारों का null
रूपांतरण PHP 7.2.0 के रूप में बहिष्कृत है, और PHP 8.0.0 के रूप में हटा दिया गया है। इस सुविधा पर भरोसा करना अत्यधिक हतोत्साहित करता है। (unset)
उपयोग करके भी एक चर को NULL टाइप-कास्ट करना PHP 7.2.0 के रूप में बहिष्कृत है, और PHP 8.0.0 के रूप में हटा दिया गया है।
<?php var_dump( (bool) null
); // bool(false) ?><br />
<?php var_dump( (int) null
); // int(0) ?><br />
<?php var_dump( (float) null
); // float(0) ?><br />
<?php var_dump( (string) null
); // string(0) "" ?><!-- आउटपुट empty string है --><br />
<?php var_dump( (array) null
); // array(0) { } ?><!-- आउटपुट empty array है --><br />
Leave a Comment:
Amit Sinha March 2nd, 2023 at 9:30 PM
😃 😄 😁 😆 😅 😂 😉 😊 😇 😍 😘 😚 😋 😜 😝 😶 😏 😒 😌 😔 😪 😷 😵 😎 😲 😳 😨 😰 😥 😢 😭 😱 😖 😣 😞 😓 😩 😫 😤
Ribhu March 3rd, 2023 at 9:30 PM
🐵 🐒 🐶 🐩 🐺 🐱 🐯 🐅 🐆 🐴 🐎 🐮 🐂 🐃 🐄 🐷 🐖 🐗 🐽 🐏 🐑 🐐 🐪 🐫 🐘 🐭 🐁 🐀 🐹 🐰 🐇