මොනවාද මේ Variable Variables ?

කොහොමද? ස්තුතියිමේ පැත්තට ආවට, අද මම කියන්න යන්නේ මටත් මුලින්ම නම අහපුවා හිනාගිය දෙයක් ගැන සහ තවත් PHP Variables ගැන කියපුවාම වැදගත් වෙන දේවල් කීපයක් ගැන.


ඔබ අහල තියනවද ? Variable Variables ගැන. කවුරුත් හිතන්න එපා Blog එක ලියනකොට මට වැරදිලා Variables කියල තවපාරක් කියවුන කියල. නැ, ඇත්තටම Variable Variables කියල දෙයක් තියනවා. සිංහලෙන් කියනව නම වෙරියබල් එකක වේරියබල් එකක් වගේ. 

හොදයි, බලමු. මොකක්ද මේක කියල. ඔබ variables ගැන මිට ඉහත තිබ්බ ලිපියෙන් කියවන්නා ඇති කියල හිතනවා. ඩොලර් ලකුණෙන් අරඹා නමක් ලබාදී අගයක් assign කිරීම මතක ඇති. නමුත්, සමහර වෙලාවට අපිට Dynamic ලෙස Variable Naming කරන්න වෙන විට සංකීර්ණ වැඩ සටහන් වලදී, අපට පුළුවන් Variable Variables පාවිච්චි කරන්න.

කෙටියෙන්  කියනවානම්, Variable Name එකක් ලෙස වෙනත් variable එකක Assigned Value එක භාවිතා කිරීම මෙහිදී සිදු වනවා.

පහල උදාහරණය බලන්න. එවිට ටිකක් අවබෝධ වෙයි.

<?php

 $gen = "city";
 $$gen = "Kandy";

 print_r($city);

?>

output: Kandy

හොදට බැලුවොත්පෙනේවි, $gen ට අපි assign කර ඇති value එක වන city යන්න අපි Variable එකක් print_r() මෙතඩ් එකට Parameters ලෙස ලබාදෙන පරිද්දෙන් print වීමට ලබාදී ඇති බව.

මෙයින්, ඔබට‍ පේනවා ඇති, Variable එකට assign කර ඇති string Value එක අපට Variable Name එකක් ලෙස භාවිතා කල හැකි බව. මෙහිදී ඔබ අනිවාර්යෙන්ම, $$gen ලෙස දෙවරක් $ ලකුණ සමග මුල් variable Name ලබාදීම ප්‍රමාණවත්, අගය assign කරන්න පෙර.අනෙක් ඕනෑම අවස්ථාවකදී ඔබට echo/ print කිරීමට කරන්න  තිබෙන්නේ, ඔබ මුලින් assign කල string value එක $ සමග ලබාදීමයි. පහත උදාහරණයත් බලන්න.

<?php

$var1 = "city_name";
$var2 = "population";
$var3 = "district";

$$var1 = "AB_City";
$$var2 = 100;
$$var3 = "AB_District";

echo "City Name is ".$city_name;
echo "City Population is ".$population;
echo "City District is ".$district;

?>

මෙම උදහරණයද සලකාබලන්න.

<?php

 $var="Hello";
 $$var = 123;
 
 echo "$var ${$var}";
?>

පහත උදාහරණ තුලිනි ඔබට පෙනේවි, dynamically මෙසේ අපට variables වලට values assign කිරීම කරන්න පුළුවන් බව.

<?php

$var1 = "City name is ";
$$var1 = "AB_City";

echo $var1."${$var1}";

$$$var1 = "AC_City";

echo $var1."${${$var1}}";

?>

ඒ වගේම අප තවමත්, loops & arrays ගැන කතා කර නැතිවීම මෙහිදී අඩුවක් වූ බව කිය යුතුයි. අප loops සහ arrays වලදී මේ ගැන තව කතා කරමු.


Comments