متغیرها نگهدارنده های اطلاعات هستند. نام متغیرها در php با علامت دلار ($
) شروع می شود و سپس نام آن ذکر می شود:
<!DOCTYPE html> <html> <body> <?php $txt = "Hello world!"; $x = 5; $y = 10.5; echo $txt; echo "<br>"; echo $x; echo "<br>"; echo $y; ?> </body> </html>
پس از اجرای دستورات بالا تمامی متغیرها مقدار سمت راست مساوی را نگه می دارند؛ مثلا txt$
مقدار !Hello world
را نگه می دارد و ...
یکی از نکته هایی که باید به یاد داشته باشید این است که اگر بخواهید مقادیر متنی را به متغیری بدهید باید آن را درون علامت quotation (تلفظ می شود کُ تِی شِن) قرار دهید:
همچنین به یاد داشته باشید که برخلاف دیگر زبان های برنامه نویسی، در زبان php هیچ دستور خاصی برای ساخت متغیرها وجود ندارد. فرآیند ساخت متغیر در زبان php بدین صورت است که شما یک مقدار را به یک متغیر می دهید و آن متغیر سریعا ساخته می شود.
برای اینکه بهتر بتوانید متغیرها را درک کنید، آن ها را ظرف هایی در نظر بگیرید که مقادیری را داخل آن ها می گذاریم. قوانین نام گذاری این متغیرها محدود هستند، بنابراین می توانید در نام گذاری خلاقیت به خرج دهید. قوانین نام گذاری متغیرها این است که:
$
شروع شده و سپس نام آن ذکر شود (مثلا userID$
).$
باید یک حرف انگلیسی و یا underscore (علامت آندرلاین _
) باشد.4userID$
)._
) باشد.userID$
و UserID$
و uSerID$
و userId$
و ... همگی متغیرهای جداگانه و مختلفی هستند.از موارد بالا مهم ترین مورد، مورد آخر است چرا که همیشه از یاد برنامه نویسان تازه کار می رود و برنامه به مشکلات متعدد برمی خورد. همیشه از یک استایل نوشتاری برای نوشتن نام متغیرها استفاده کنید تا مشکلی برایتان پیش نیاید.
از تابع echo
در زبان php معمولا برای نمایش داده ها به صورت مستقیم روی صفحه نمایش استفاده می شود. سه مثال ساده از این تابع را با هم کار می کنیم: اولین مثال نمایش یک رشته ی متنی ساده است:
<!DOCTYPE html> <html> <body> <?php $txt = "roxo.ir"; echo "I love $txt!"; ?> </body> </html>
خروجی این کد عبارت "!I love roxo.ir" خواهد بود.
مثال دوم نمایش یک متن از طریق متغیرها است:
<!DOCTYPE html> <html> <body> <?php $txt = "roxo.ir"; echo "I love " . $txt . "!"; ?> </body> </html>
خروجی این کد عبارت "!I love roxo.ir" خواهد بود. نقطه هایی که قبل و بعد از متغیر گذاشته شده است، متغیر را به آنچه قبل و بعدش قرار دارد متصل می کند. ما هنوز به توضیحات آن نرسیده ایم بنابراین اگر متوجه نمی شوید جای نگرانی نیست.
مثال سوم نمایش مقدار نهایی پس از جمع دو متغیر است:
<!DOCTYPE html> <html> <body> <?php $x = 5; $y = 4; echo $x + $y; ?> </body> </html>
خروجی این کد عدد 9 خواهد بود.
البته این ها تنها مثال هایی برای آشنایی شما با متغیرها بود. در قسمت بعد با دستور echo
بیشتر آشنا می شویم.
اگر دقت کرده باشید در مثال های بالا هیچ گاه نگفتیم که متغیر ما از چه جنسی است (عدد است، متن است، بولین است و ...). این مسئله بدین خاطر است که زبان php بر اساس مقدار متغیر، به صورت خودکار یک «نوع داده» یا data type را به متغیر منتسب می کند. به همین دلیل می توانیم یک عدد را با یک رشته جمع بزنیم بدون اینکه به خطایی برخورد کنیم!
البته در PHP 7 این نوع داده ها نیز اضافه شده اند و از این پس می توانیم نوع داده را نیز مشخص کنیم؛ مثلا هنگامی که تابعی تعریف می کنیم می توانیم بگوییم ما انتظار یک عدد را داریم و اگر متن وارد شد خطایی از نوع Fatal Error اتفاق می افتد. در این باره بعدا بیشتر صحبت می کنیم.
شما می توانید متغیرها را در هر جایی از کدهایتان که بخواهید تعریف کنید و scope آن متغیر یعنی قسمت هایی از کد که از آنجا متغیر قابل استفاده و دسترسی است. متغیرهای php سه scope مختلف دارند:
1. اگر متغیر شما خارج از توابع تعریف شود، دارای global scope می شود:
<!DOCTYPE html> <html> <body> <?php $x = 5; // global scope function myTest() { // استفاده از متغیر بالا درون این تابع باعث بروز خطا و دیده نشدن اطلاعات می شود echo "<p>Variable x inside function is: $x</p>"; } myTest(); echo "<p>Variable x outside function is: $x</p>"; ?> </body> </html>
همانطور که در خروجی می بینید زمانی که متغیر ما دارای scope سراسری (Global) است نمی توانیم از آن داخل توابع استفاده کنیم.
2. اگر متغیر شما درون یک تابع تعریف شده باشد دارای local scope یا scope محلی خواهد بود:
<!DOCTYPE html> <html> <body> <?php function myTest() { $x = 5; // local scope echo "<p>Variable x inside function is: $x</p>"; } myTest(); // using x outside the function will generate an error echo "<p>Variable x outside function is: $x</p>"; ?> </body> </html>
در چنین حالتی نمی توانیم از متغیر خود بیرون از تابع استفاده کنیم. بدین صورت می توانیم از یک نام برای چندین متغیر درون چندین تابع استفاده کنید چرا که متغیرهای درون توابع، scope محلی (local) دارند و محدود به آن تابع هستند.
اگر می خواهید از درون یک تابع به متغیری دسترسی داشته باشید که دارای global scope است باید از کلیدواژه ی global
استفاده کنید. تنها کافی است که global
را قبل از نام متغیر اضافه کنید:
<!DOCTYPE html> <html> <body> <?php $x = 5; $y = 10; function myTest() { global $x, $y; $y = $x + $y; } myTest(); // run function echo $y; // output the new value for variable $y ?> </body> </html>
می بینید که این بار به خطا برخورد نکردیم. البته php تمام متغیرهای سراسری را در [GLOBALS[index$
ذخیره می کند (به جای index
باید نام متغیر را قرار دهید) بنابراین می توانید از طریق آن حتی از درون توابع به متغیرهای سراسری دسترسی داشته باشید و مقدار آن ها را تغییر دهید.
بنابراین می توانیم مثال بالا را اینطور بنویسیم:
<!DOCTYPE html> <html> <body> <?php $x = 5; $y = 10; function myTest() { $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y']; } myTest(); echo $y; ?> </body> </html>
3. در حالت عادی زمانی که تابعی اجرا می شود و کارش را انجام می دهد متغیرهای آن نابود می شوند اما برخی اوقات به این متغیر محلی نیاز داریم و می خواهیم بعدا کارهای دیگری روی آن انجام دهیم. برای جلوگیری از حذف متغیرهای محلی از کلیدواژه ی static
استفاده می کنیم:
<!DOCTYPE html> <html> <body> <?php function myTest() { static $x = 0; echo $x; $x++; } myTest(); echo "<br>"; myTest(); echo "<br>"; myTest(); ?> </body> </html>
بدین صورت هر زمانی که این متغیر را فراخوانی کنیم هنوز هم اطلاعات خود را به ما می دهد. البته حواستان باشد که متغیر هنوز هم از نوع محلی (local) است.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.