परिचय
PHP में, वेरिएबल नाम को डायनामिक रूप से सेट करना संभव है। ऐसा वेरिएबल किसी मौजूदा वेरिएबल के मान को नाम के रूप में उपयोग करता है। एक वेरिएबल वेरिएबल को दो $ साइन के प्रीफिक्स के साथ परिभाषित किया जाता है।
उदाहरण
<?php
$var1 = "xyz"; // सामान्य वेरिएबल
$$var1 = "abcd"; // वेरिएबल वेरिएबल
echo $var1 . "\n";
echo $$var1 . "\n";
echo "{\$\$var1} $xyz";
?>
आउटपुट
xyz abcd abcd abcd
ध्यान दें कि $$var1 का मान $xyz के समान है, xyz $var1 का मान है।
सामान्य वेरिएबल का न्यूमेरिक मान वेरिएबल वेरिएबल के रूप में उपयोग नहीं किया जा सकता:
उदाहरण
<?php $var1 = 100; // सामान्य वेरिएबल $$var1 = 200; // वेरिएबल वेरिएबल echo $var1 . "\n"; echo $$var1 . "\n"; echo $100; ?>
आउटपुट
PHP Parse error: syntax error, unexpected '100' (T_LNUMBER), expecting variable (T_VARIABLE) or '{' or '$' line 6
सरणी सबस्क्रिप्ट के संदर्भ में वेरिएबल वेरिएबल को परिभाषित करना भी संभव है। निम्न उदाहरण में, एक वेरिएबल वेरिएबल को सामान्य सरणी के 0वें एलिमेंट का उपयोग करके परिभाषित किया गया है:
उदाहरण
<?php
$var1 = array("aa", "bb"); // सामान्य वेरिएबल
${$var1[0]} = 10; // सरणी एलिमेंट के साथ वेरिएबल वेरिएबल
echo $var1[0] . "\n";
echo $aa . "\n";
echo ${$var1[0]} . "\n";
?>
आउटपुट
aa 10 10
क्लास प्रॉपर्टी भी वेरिएबल प्रॉपर्टी नाम का उपयोग करके एक्सेसिबल हैं। यह सुविधा तब उपयोगी होती है जब प्रॉपर्टी नाम एक सरणी से बना होता है।
उदाहरण
<?php
class branches {
var $u = "Architecture";
var $ugCourses = array("CSE", "MECH", "CIVIL");
}
$obj = new branches();
$courses = "ugCourses";
echo $obj->{$courses[0]} . "\n";
echo $obj->{$courses}[0] . "\n";
?>
आउटपुट
Architecture CSE
व्याख्या: $obj->{$courses[0]} पहले $courses[0] ("ugCourses") को हल करता है, फिर $obj->ugCourses एक्सेस करता है। $obj->{$courses}[0] पहले $courses ("ugCourses") को हल करता है, फिर $obj->ugCourses[0] एक्सेस करता है।