به چهارمین جلسه از آموزش برنامه نویسی PHP خوش آمدید. در این جلسه با مبحث دستورات شرطی در زبان PHP آشنا خواهیم شد.
دستورات شرطی
هرگاه بخواهیم اجرای برخی از دستورات برنامه را به شرطی وابسته کنیم، از دستورات شرطی استفاده می کنیم. برای مثال میخواهیم اگر مقدار یک متغیر کمتر از ۱۰ بود یک اتفاق خاص روی دهد و اگر مقدار آن متغیر بیشتر از ۱۰ بود یک اتفاق دیگر. در چنین مواردی از دستورات شرطی استفاده می کنیم. این دستورات در همه زبان های برنامه نویسی موجود است و در ادامه به بررسی هر یک از آنها در زبان PHP خواهیم پرداخت. دستورات شرطی در زبان PHP عبارتند از:
- دستور if
- دستور if..else
- عملگر عبارت شرطی
- دستور else..if
- دستور switch
دستورات شرطی در PHP
دستور if
الگوی استفاده از دستور if بدین صورت است: ;if (condition) statement
در الگوی فوق عبارت condition همان شرطی است که می بایست تست شود و چنانچه درست باشد، statement اجرا می شود. statement نیز هر دستور قابل اجرایی در زبان PHP است. پس الگوی فوق را بدین شکل می توان تشریح کرد. ابتدا شرط موجود در داخل پرانتز (condition) تست شده و چنانچه ارزش درست داشته باشد، دستورات پس از آن (statement) اجرا خواهند شد.
دستور if..else
در دستور if چنانچه شرط غلط باشد، عکس العملی انجام نمی شود. این نقص با استفاده از دستور if..else برطرف می شود. دستور if..else هر دو حالت ممکن برای شرط را تست می کند (درست و غلط). الگوی استفاده از دستور if..else بدین صورت است: ;if (condition) statement1 else statement2
در الگوی فوق چنانچه شرط درست باشد، statement1 و چنانچه غلط باشد، statement2 اجرا می شود. به قطعه کد زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $number = 16; if($number < 10) { echo "$number is less than 10"; } else { echo "$number is greater than 10"; } ?> |
در برنامه بالا در خط ۵ مقدار متغیر number$ تست شده و کوچکتر بودن آن از عدد ۱۰ بررسی می شود. چنانچه شرط درست باشد، پیغام موجود در خط ۶ و چنانچه غلط باشد، پیغام موجود در خط ۹ در خروجی چاپ خواهد شد.
خروجی قطعه کد فوق بدین صورت است:
1 |
16 is greater than 10 |
عملگر عبارت شرطی
عملگر عبارت شرطی حالت خلاصه شده ای از ساختار if..else است و استفاده از آن اختیاری است. الگوی استفاده از عملگر عبارت شرطی بدین صورت است: ;condition) ? expression1 : expression2)
در الگوی فوق شرط داخل پرانتز تست شده و چنانچه درست باشد، حاصل کل عبارت برابر با expression1 و چنانچه غلط باشد، حاصل کل عبارت برابر با expression2 خواهد بود. دقت داشته باشید که در الگوی عملگر عبارت شرطی expression1 و expression2 مانند statement1 و statement2 دستورات قابل اجرا نیستند. یک مقدار هستند که به جای کل عبارت قرار می گیرند. برای توضیحات بیشتر به ویدئوی ضمیمه آموزش مراجعه کنید.
به قطعه کد زیر توجه کنید:
1 2 3 4 5 6 7 8 9 |
<?php $number = 16; $result = ($number == 10) ? "$number is equal to 10" : "$number is not equal to 10"; echo $result; ?> |
در برنامه بالا در خط ۵ مقدار متغیر number$ با عدد ۱۰ مقایسه شده و چنانچه با آن برابر باشد، حاصل کل عبارت برابر با عبارت بعد از علامت سوال (?) و چنانچه برابر نباشد، حاصل کل عبارت برابر با عبارت بعد از دو نقطه (:) خواهد بود. در نهایت نتیجه درون متغیر result$ قرار گرفته و در خروجی چاپ می شود.
خروجی قطعه کد فوق بدین صورت است:
1 |
16 is not equal to 10 |
دستور else..if
دستور else..if جهت بررسی حالت های مختلف یک چیز استفاده می شود. فرض کنید می خواهیم مقدار یک متغیر که حاوی اسم یکی از روزهای هفته است را بررسی کرده و عکس العمل مناسب را انجام دهیم. مقدار این متغیر می تواند هر یک از مقادیر زیر باشد : saturday, sunday, monday, tuesday, wednesday, thursday , friday . جهت بررسی این حالت های مختلف از دستور else..if استفاده می کنیم.
به قطعه کد زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php $today = "sunday"; if($today == "saturday") { echo "today is saturday"; } else if($today == "sunday") { echo "today is sunday"; } else if($today == "monday") { echo "today is monday"; } else if($today == "tuesday") { echo "today is tuesday"; } else if($today == "wednesday") { echo "today is wednesday"; } else if($today == "thursday") { echo "today is thursday"; } else if($today == "friday") { echo "today is friday"; } ?> |
در برنامه بالا در خط ۵ مقدار متغیر today$ با عبارت saturday مقایسه شده و چنانچه با آن برابر باشد، پیغام today is saturday در خروجی چاپ می شود. مسئله اینجاست که ممکن است این شرط برقرار نبوده و مقدار این متغیر برابر با هر یک از مقادیر sunday, monday, … , friday باشد. در ادامه این کد، برای بررسی هر یک از این حالت های دیگر از ساختار else..if استفاده شده است.
خروجی قطعه کد فوق بدین صورت است:
1 |
today is sunday |
دستور switch
دستور switch جایگزینی بهتر و منطقی تر برای ساختار else..if است. در این دستور حالت های مختلف یک چیز توسط دستورات case متعدد بررسی شده و هر کدام از این case ها (موارد) که برقرار باشند، دستور متناسب با آن اجرا می شود. دستور default بخش اختیاری دستور switch است و زمانی اجرا می شود که مقدار متغیر مورد نظر برابر با هیچکدام از مقادیر موجود در case ها نباشد.
نکته دیگری که در مورد دستور switch وجود دارد این است که در انتهای هر یک از case ها می بایست از دستور break (به معنی شکستن) استفاده کنیم. ضرورت استفاده از دستور break این است که چنانچه از آن استفاده نکنیم، پس از اجرای case موردنظر، برنامه به خطوط بعدی نیز رفته و دستورات جلوی case های دیگر را هم اجرا می کند. می توانید با برداشتن دستورات break موجود در قطعه کد زیر نتیجه را مشاهده کنید.
به قطعه کد زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php $today = "monday"; switch($today) { case "saturday" : echo "today is saturday"; break; case "sunday" : echo "today is sunday"; break; case "monday" : echo "today is monday"; break; case "tuesday" : echo "today is tuesday"; break; case "wednesday" : echo "today is wednesday"; break; case "thursday" : echo "today is thursday"; break; case "friday" : echo "today is friday"; break; default : echo "error..."; break; } ?> |
در قطعه کد فوق همان برنامه مربوط به دستور else..if با دستور switch بازنویسی شده است. به نحوه استفاده از دستورات case و همینطور دستورات break آخر case ها دقت داشته باشید. در خط ۱۵ نیز نحوه استفاده از دستور default را مشاهده می کنید.
خروجی قطعه کد فوق بدین صورت است:
1 |
today is monday |
به پایان این جلسه آموزشی رسیدیم. در آینده با بخشهای دیگری از زبان PHP آشنا خواهیم شد. با ما همراه باشید…
12 دیدگاه. ارسال دیدگاه جدید
سلام
خیلی روان و تمیز و کامل آموزش می دید استادهای دیگه چنان خسته کننده و مبهم آموزش میدن که علاقه ایی برای آموزش نمی مونه. امیدوارم تا آخرین ویدیو همینجور آموزش داده باشید
ممنون
ممنون از شما دوست عزیز
سلام
ممنون از آموزش روان شما
برای شرط گذاری اعداد جلوی case به چه صورت باید عمل کنیم؟ به طور مثال اگر متغیر Age$ بزرگتر از ۳۰ بود؟
دوست عزیز همونطوری که در آموزش گفته شده دستور سوئیچ جهت بررسی مقادیر و حالات مختلف یک چیز (شی) هست و مقداری که جلوی دستور case قرار میگیره باید یک عدد یا مقدار ثابت و مشخص باشه (نمیتونه حاوی شرط باشه).
برای سناریوی مدنظر شما ساختار if..else مناسبتر هست.
سلام. میشه بگید چرا حروف رو میزارید داخل ” ” ولی اعداد رو نه؟
توی مثالهای بالا ;number=16 ولی ;”today =”sunday
من امتحان کردم جواب داد ولی ارورم داد
دوست عزیز دلیلش این هست که ۱۶ یک عدد صحیح هست و نیازی به ” ” نداره ولی sunday یک رشته کاراکتری هست و به ” ” نیاز داره.
سلام اول اینکه خیلی ممنونم بخاطر آموزش هاتون
دوم اینکه یه سوال داشتم
شما گفتید وقتی خواستید بررسی کنید که چیزی مساویه
(if($m == 4
اینکارو بکنید حالا اگه بخوایم شرطی بزاریم که اگه مساوی با چیزی نبود اون کارو بکنه چیکار باید بکنیم؟
مثلا بجای اینکه بگیم اگر m$ مساوی بود با ۴ فلان کارو بکن، بگیم اگه m$ مساوی با ۴ نبود و هرچی بجز ۴ بود این کارو بکن؟؟
خیلی ممنون میشم جواب بدید
دوست عزیز در این حالت باید از عملگر نامساوی =! استفاده کنیم.
به اینصورت (۴ =! if($m
خیلی ممنون ❤
خواهش میکنم دوست عزیز
موفق باشید
تنها چیزی که میشه گفت اینه که واقعا آموزشتون بی نظیره
ممنونم دوست عزیز
از اظهار لطفتون نسبت به بنده و آموزشهای وبسایت سپاسگزارم.