آموزش PHP - جلسه ششم: حلقه های While و For
گاهی در برنامهنویسی شرایطی پیش میآید که نیاز داریم بخش خاصی از کد چندین مرتبه اجرا شود. در این حالت می توانیم از حلقهها بهره ببریم. همانند سایر زبانهای برنامه نویسی در php هم از چند نوع حلقه پشتیبانی میشود. حلقه while و for از جمله مهمترین آنها هستند.
حلقه while
با استفاده از این حلقه میتوان کد مورد نظر را تا زمانی که شرط برقرار باشد اجرا کرد. به مثال زیر که سادهترین حالت استفاده از حلقه while است توجه کنید.
while ($var < 10){ echo "var is now < 10";}?>
همانطور که در کد بالا مشاهده میکنید، تا زمانیکه شرط داخل پرانتز برقرار باشد، کدی که در داخل حلقه نوشته شده، اجرا خواهد شد. پس مشخصا اگر شرط حلقه هیچگاه false نشود، حلقه ما تا بینهایت بار ادامه خواهد یافت.
کار را با یک مثال دیگر ادامه میدهیم.در مثال زیر ابتدا متغیر i را برابر با عدد ۱ قرار داده و در شرط حلقه، اعلام میکنیم تا زمانیکه مقدار i از عدد ۷ کوچکتر است، کد داخل حلقه اجرا شود. در کد حلقه ابتدا مقدار کنونی i را چاپ کرده و سپس با استفاده از عملگر افزایشی که در جلسات پیش با آن آشنا شدید، در هر بار اجرای حلقه یک واحد به مقدار کنونی متغیر i اضافه میکنیم. بدین صورت کد حلقه تا زمانیکه مقدار i کوچکتر از عدد ۷ باشد، اجرا خواهد شد و نتیجه مثال زیر چاپ اعداد ۱ تا ۶ خواهد بود.
$i = 1;while ($i < 7){ echo "$i "; $i++;}?>
اما فرض کنید شرط حلقه به نحوی باشد که از همان ابتدا مقدار False را برگرداند. در این حالت کد داخل حلقه هیچگاه اجرا نمیشود. اما در پیاچپی راهی تعبیه شده تا در صورت نیاز کد مورد نظر ما در حلقه حتی اگر شرط هم برقرار نباشد، حداقل یک بار اجرا شود. در این شرایط باید از دستور Do...While استفاده کنیم.
حلقه Do...While
همانطور که گفتیم در صورتی که میخواهید کد مورد نظر شما حتی در حالت برقرار نبودن شرط حلقه یکبار اجرا شود، باید از Do ... While استفاده کنید. روش کلی استفاده از این نوع حلقه در مثال زیر آورده شده است:
$i = 8;do{ echo "meqdare i aknun $i ast"; $i++;}while ($i < 7);?>
در کد بالا ابتدا مقدار متغیر i را برابر ۸ تعیین میکنیم. سپس با دستور Do... while ابتدا یک دستور چاپ echo را وارد کردهایم که مقدار کنونی i را نمایش دهد. (دقت کنید برای اینکه قصد دارید مقدار متغییر در دستور echo چاپ شود از دابل کوتیشن استفاده کردهایم.) سپس با عملگر افزایش ++ یک واحد به مقدار کنونی i اضافه کردهایم. تا زمانیکه شرط داخل While برقرار باشد کد ما نیز اجرا خواهد شد. اما از آنجا که در شرط حلقه فوق برقرار نیست، فقط یک بار شاهد اجرای دستور نوشته شده در این حلقه خواهیم بود.
پس با اضافه کردن Do به حلقه While مشاهده کردید که چگونه میتوان کد مورد نظر را حداقل یکبار در صورتی که شرط هم برقرار نباشد اجرا کنیم. ذکر این نکته هم ضروری به نظر میرسد که اگر شرط برقرار باشد باز هم کد قرار گرفته در بخش do اجرا خواهد شد.
برای درک بهتر به مثال دیگری در این مورد توجه کنید. در کد زیر ابتدا مقدار متغیر i را برابر ۵ تعیین میکنیم و سپس با استفاده از حله do...while اعلام میکنیم تا هنگامی که شرط ما یعنی کوچکتر یا مساوی بودن i با عدد ۷ برقرار است، کد حلقه که اینبار در بخش do نوشته شده، اجرا شود.
$i = 5;do { echo "number is now $i "; $i++;}while($i <= 7);?>
در کد حلقه باز هم ابتدا مقدار کنونی i را چاپ کرده و سپس به ازای هر بار اجرا حلقه یک واحد به آن اضافه میکنیم. پس خروجی کد بالا در مرورگر به صورت زیر خواهد بود:
567
اما در پیاچپی برای استفاده از حلقهها باز هم محدود به این دو روش نیستید. روش بعدی استفاده از حلقه For است.
حلقه For
اگر به مثالهایی که در بخش توضیحات حلقه While آوردیم دقت کرده باشید، متوجه شدهاید که در هر مثال از یک متغییر به نوعی به عنوان یک شمارشگر بهره بردهایم تا در هر بار اجرای حلقه بتوانیم تعداد دفعات تکرار اجرا شدن آن را کنترل کنیم. در حلقه For بر خلاف While شما حتما باید در دستور اصلی این حلقه یک شمارنده تعریف کنید. برای اینکه بهتر موضوع را درک کنید به کد زیر توجه کنید که سادهترین حالت استفاده از حلقه For در پیاچپی است:
//using for in php in simplest mode!for (init; test; incremnet){ code to run}?>
در کد بالا منظور از init در واقع تعریف و مقدار دهی یک شمارشگر است. test شرط حلقه خواهد بود و تا زمانیکه این شرط برقرار باشد (یعنی true را برگرداند) حلقه اجرا خواهد شد و در نهایت incremnet مقدار اضافه شدن یا کاسته شدن شمارشگر حلقه در هربار اجرای حلقه است (دقیقا همان کار عملگر افزایش و کاهشی که در while استفاده کردیم را میکند). همچنین به این نکته توجه کنید که بین هر کدام از این موارد باید علامت نقطه ویرگول ; را تایپ کنید. برای درک بهتر اینبار به مثال عملی زیر توجه کنید:
for ($i = 1; $i < 7; $i++){ echo "$i ";}?>
در کد بالا ابتدا شمارنده حلقه را با متغیری به نام i تعریف کرده و مقدار پیشفرض آن را عدد ۱ تعیین کردیم. سپس شرکت حلقه را نوشتهایم که به پیاچپی میگوید تا زمانیکه مقدار i کوچکتر از عدد ۷ است حلقه را اجرا کند. در آخر مقدار متغیر شمارنده را به نحوی تعیین کردهایم که بعد از هربار اجرای حلقه یک واحد افزایش داده شود. کد داخل حلقه نیز مقدار کنونی متغیر i را چاپ خواهد کرد. در نتیجه خروجی کد بالا در مرورگر به صورت زیر خواهد بود:
123456
استفاده از حلقه For نسبت به while باعث میشود کدنویسی شما کمتر شود و از نظر بسیاری از توسعهدهندگان این حلقه به نوعی حرفهای تر است. ولی نتیجه کار همانطور که متوجه شدهاید در هر صورت یکی خواهد بود.
حلقهها بسیار ساده هستند ولی در عین حال قدرت زیادی دارند. با کمی خلاقیت میتوان استفادههای بسیار خوبی از این دستورات ببریم. به عنوان مثال ما با استفاده از کد ساخت جدول در HTML و حلقههای پیاچپی که در این جلسه به صورت کامل با آنها آشنا شدید، یک جدول ضرب بسیار ساده را تولید کردهایم:
echo " – "; }echo "";echo "";}?>
تنها نکتهای که در مثال بالا وجود دارد، این است که همانند دستورات تو در توی if در اینجا نیز از حلقه for به صورت تو در تو استفاده کرده ایم. شما میتوانید همانند IF های تودرتو بی نهایت حلقه While یا For را هم به همان شکل مورد استفاده قرار دهید. خروجی کد بالا در مرورگر کاربر به صورت زیر خواهد بود:
1*1 – 1*2 – 1*3 – 1*4 – 1*5 – 1*6 – 1*7 – 1*8 – 1*9 – 1*10 – 2*1 – 2*2 – 2*3 – 2*4 – 2*5 – 2*6 – 2*7 – 2*8 – 2*9 – 2*10 – 3*1 – 3*2 – 3*3 – 3*4 – 3*5 – 3*6 – 3*7 – 3*8 – 3*9 – 3*10 – 4*1 – 4*2 – 4*3 – 4*4 – 4*5 – 4*6 – 4*7 – 4*8 – 4*9 – 4*10 – 5*1 – 5*2 – 5*3 – 5*4 – 5*5 – 5*6 – 5*7 – 5*8 – 5*9 – 5*10 – 6*1 – 6*2 – 6*3 – 6*4 – 6*5 – 6*6 – 6*7 – 6*8 – 6*9 – 6*10 – 7*1 – 7*2 – 7*3 – 7*4 – 7*5 – 7*6 – 7*7 – 7*8 – 7*9 – 7*10 – 8*1 – 8*2 – 8*3 – 8*4 – 8*5 – 8*6 – 8*7 – 8*8 – 8*9 – 8*10 – 9*1 – 9*2 – 9*3 – 9*4 – 9*5 – 9*6 – 9*7 – 9*8 – 9*9 – 9*10 – 10*1 – 10*2 – 10*3 – 10*4 – 10*5 – 10*6 – 10*7 – 10*8 – 10*9 – 10*10 –
با کمی خلاقیت بیشتر و اضافه کردن رنگ و حاشیه به کد HTML مربوط به ساخت جدول، میتوانید یک جدول ضرب کاربری و زیبا را تنها با چند خط کدنویسی در php تولید کنید.
نکته دیگر اینکه حلقه دیگری به نام For Each در پیاچپی وجود دارد که کاربرد آن کمی پیشرفته از دو حلقه مورد بحث است و به دلیل اینکه قصد ما آموزش آسان و روان پیاچپی است، ترجیح میدهیم در ساخت پروژههای عملی چنین بخشهایی را به شما آموزش دهیم.
این جلسه نیز در همینجا به پایان رسید. مثل همیشه برای شما یک تمرین در نظر داریم. سعی کنید جدول ضرب بالا را با استفاده از حلقه While در php تولید کنید. در صورتی که سوالی در مورد مباحث این جلسه برایتان پیش آمده نیز میتوانید در بخش دیدگاهها آن را اعلام کنید.
یک خبر خوب هم به شما میدهیم که با مطالعه این شش جلسه، مقدمات و پایه و اساس لازم برای نوشتن پروژهها و مثالهای کاربردی ساده را یاد گرفتهاید و از جلسه بعد سعی میکنیم آمورشها را با ایجاد پروژههای کاربردی به پیش ببریم و در طی این آموزشها سایر مباحث را نیز فرا بگیریم. پس همچنان پیگیر این سری آموزشی در زومیت باشید.