PHP में वेरिएबल नाम को स्ट्रिंग के रूप में प्राप्त करना
उदाहरण 1: वेरिएबल वेरिएबल्स ()
<?php
$a = "This is it!";
$$a = "Demo string!";
print($a);
?>
आउटपुट
This is it!
व्याख्या: $a में "This is it!" है। $$a वेरिएबल $This is it! बनाता है (मान्य लेकिन असामान्य)। यह **वेरिएबल नाम प्राप्त नहीं करता** - यह डायनामिक वेरिएबल नाम बनाता है।
उदाहरण 2: $GLOBALS के माध्यम से वेरिएबल नाम खोजें
<?php
$val = "This is it!";
function display($var) {
foreach ($GLOBALS as $name => $value) {
if ($value === $var) { // पहचान तुलना
return $name;
}
}
return false;
}
print display($val); // "val" प्रिंट करता है
?>
आउटपुट
val
महत्वपूर्ण सीमाएं
- समान मान, अलग वेरिएबल: यदि दो वेरिएबल्स का समान मान है, तो पहला मिला हुआ लौटाया जाता है।
- केवल ग्लोबल स्कोप: $GLOBALS केवल ग्लोबल वेरिएबल्स रखता है, लोकल नहीं।
- पहचान vs समानता:
===समान इंस्टेंस (ऑब्जेक्ट्स के लिए) या समान टाइप+मान (स्केलर्स के लिए) जांचता है। - विश्वसनीय नहीं: यह एक हैक है; PHP में वेरिएबल नाम रनटाइम पर इंट्रोस्पेक्टेबल नहीं हैं।
बेहतर दृष्टिकोण
- एसोसिएटिव एरे/ऑब्जेक्ट्स का उपयोग करें जहां कुंजी नाम है:
['val' => 'This is it!']। - डिबगिंग के लिए:
get_defined_vars(),debug_zval_dump(), या Xdebug/IDE इंस्पेक्शन। - रिफ्लेक्शन:
ReflectionClass,ReflectionFunctionस्ट्रक्चरल इंट्रोस्पेक्शन के लिए।
नोट
PHP में, वेरिएबल नाम **कंपाइल-टाइम** निर्माण हैं, रनटाइम एंटिटीज़ नहीं। "नाम द्वारा वेरिएबल एक्सेस" पैटर्न लगभग हमेशा एक डिज़ाइन समस्या का संकेत देता है।