$Hello = "World";
$a = "Hello";
echo $a; // Hello
echo $$a; // World
در مثال یک متغیر به نام $Hello ایجاد شده و به آن رشته World اختصاص داده شده است. همچنین یک متغیر به نام $a ایجاد شده و به آن رشته Hello اختصاص داده شده است.
زمانی که از یک علامت $ استفاده کرده ایم مقدار متغییر $a نمایش داده میشود اما زمانی که از دو علامت $ استفاده شده به معنای متغیری است که نام آن برابر با مقدار $a است.
مقدار $a برابر Hello است، بنابراین $$a معادل با $Hello میشود. و مقدار $Hello برابر World است.
مثال :
فرض کنید میخواهید یک سری متغیر با نامهای متمایزی ایجاد کنید، اما نام آنها را از یک آرایه بگیرید. اینجاست که متغیرهای متغیر به کمک میآیند:
$variable_names = array("var1", "var2", "var3");
foreach ($variable_names as $name) {
$$name = rand(1, 100);
}
echo $var1;
echo $var2;
echo $var3;در این مثال، ابتدا یک آرایه با نامهای متغیرها ایجاد میشود. سپس با استفاده از حلقه foreach، برای هر نام متغیر در آرایه، یک متغیر با همان نام ایجاد میشود و به آن یک مقدار تصادفی از ۱ تا ۱۰۰ اختصاص داده میشود. در نهایت، مقادیر متغیرها با استفاده از نام آنها نمایش داده میشود.
شما می توانید به هر تعداد دلخواه $ در php قرار دهید (بر خلاف زندگی عادی):
echo $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$dontTryThisAtHome;
مثال:
$Bar = "a";
$Foo = "Bar";
$World = "Foo";
$Hello = "World";
$a = "Hello";
$a; //Returns Hello
$$a; //Returns World
$$$a; //Returns Foo
$$$$a; //Returns Bar
$$$$$a; //Returns a
$$$$$$a; //Returns Hello
$$$$$$$a; //Returns World
//... and so on ...//
و حتی به صورت زیر:
$nameTypes = array("first", "last", "company");
$name_first = "John";
$name_last = "Doe";
$name_company = "PHP";
foreach($nameTypes as $type)
print ${"name_$type"} . "\n";
print "$name_first\n$name_last\n$name_company\n";با این حال در برخی موارد مانند Superglobal array ها مانند $_SERVER و متغیر $this که از متغیر های خاص هستند این قابلیت غیرقابل استفاده می باشد.
👤 AmirHossein
💎 Channel: @DevelopixPHP