PHP : متغیرهای پویا
PHP : متغیرهای پویا
سطح : متوسط، پیشرفته
اولین درسی که در PHP خواهید آموخت این است که نام هر متغیر با علامت $ آغاز می شود. از آنجایی که در PHP متغیرها نیازی به تعریف ندارند، به محض این که نام متغیری را برای اولین بار در برنامه بنویسیم، PHP فضای لازم را به آن متغیر اختصاص می دهد. این ویژگی باعث می شود که بتوان از تکنیکی برای تعریف متغیرهای پویا استفاده نمود. این تکنیک "متغیرهای متغیر" یا "variable variables" نام دارد.
به قطعه کد زیر توجه کنید:
- $a = "hello";
- $hello = "hello everyone";
- echo $a;
- echo $hello;
- echo $$a;
خروجی خط سوم رشته ی "hello" و خط چهارم، رشته ی "hello everyone" است. خروجی خط آخر نیز "hello everyone" است. نکته همینجاست. موتور PHP در خط آخر برای پردازش $$a ابتدا مقدار $a را که رشته ی hello است پردازش کرده و سپس علامت $ را به آن متصل می کند و بدین ترتیب به متغیر $hello دست پیدا می کند و مقدار آن را در خروجی چاپ می کند.
$$a -> $hello -> hello everyone
حال به مثال زیر که یک کاربرد ویژه از تکنیک بالاست توجه کنید.
- $a = 'soheil';
- $b = 'sajad';
- $c = 'ali';
- $d = 'saleh';
- $e = 'milad';
-
- $students = array('a' , 'c' , 'd');
- foreach ($students as $seat){
- echo $$seat;
- }
همانطور که مشاهده می کنید در 5 خط اول، پنج متغیر تعریف کردیم. در خط هفتم نیز آرایه ای با سه عنصر a , c , d تعریف کردیم. سپس با استفاده از حلقه foreach به تک تک عناصر آرایه دسترسی پیدا کرده و با استفاده از این عناصر، متغیرهای پویا که نام ها هستند، را در خروجی چاپ کردیم.
در برخی اوقات استفاده از متغیرهای پویا باعث پیچیدگی خاصی می شود که می توان آن را به راتی رفع کرد. به عنوان مثال اگر از عبارت $$var[1] استفاده کنیم، PHP نمی تواند تشخیص دهد که آیا ابتدا باید $var را پردازش کند و سپس به عنصر 1 آن درسترسی داشته باشد یا اینکه ابتدا، عنصر اول آرایه ی $var[1] را پردازش کرده و سپس متغیر پویا را بدست آورد. از این رو می توان از کروشه { } برای جداسازی استفاده نمود.
- ${$var[1]};
- ${$var}[1];
در خط اول ابتدا عنصر اول آرایه ی $var[1] به دست می آید و سپس به متغیری با همان نام دسترسی پیدا می کند. به عنوان مثال عنصر اول آرایه عبارت element باشد آنگاه PHP متغیر $element را جستجو می کند. اما در خط دوم ابتدا متغیر $var پردازش شده و سپس مقدار آن به عنوان نام آرایه برگردانده می شود و به اولین عنصر این آرایه دسترسی پیدا می شود. مثلا اگر $var = "element"; باشد، نتیجه به صورت $element[1] خواهد بود.
دنیا هیچ ارزشی برای عزت نفس شما قایل نیست. در این دنیا از شما انتظار میرود قبل از اینکه نسبت به خودتان احساس خوبی داشته باشید کار مثبتی انجام دهید.