به این فکر کنید که می خواهید به یک سفر تفریحی برید!! اگر در تاریخ مورد نظر امتحان داشته باشید سفر خودتون رو لغو می کنید در غیر این صورت طبق برنامه به مسافرت میرید! این یک نمونه از دستورات شرطی هست که در زندگی روزمره زیاد باهاش برخورد می کنیم. در زبان های برنامه نویسی هم یکی از مهمترین و پرکاربردترین بخش های اون زبان دستورات شرطی هستند که اجازه میدن در صورتی که یک عبارت درست باشد یکسری عملیات انجام بشه و در صورت عدم برقراری اون عبارت یکسری دیگه از کارها انجام بشن!

در زبان php شکل کلی دستور شرطی به صورت زیر هستش:

1.if (ebarate Sharti)
2.     dastoori ke agar shart bargharar bashe ejra mishe;
3.else
4.     dastoori ke agar shat bargharar Nabashe ejra mishe;

توجه کنید که میتونید قسمت else رو حذف کنید در این صورت فقط زمانیکه شرط برقرار باشه دستور خط 4 اجرا میشه و اگر شرط برقرار نباشه هیچ اتفاقی نمی افته! یعنی به شکل زیر در میاد:

1.if (ebarate Sharti)
2.     dastoori ke agar shart bargharar bashe ejra mishe;

مثلا شما می خواهید فقط به کاربر گروه admin اجازه ورود بدید در این صورت اگر کاربر از گروه admin باشه به صفحه مورد نظر ببریدش و در غیر این صورت بهش پیغام مناسبی نمابش بدید:

if ($userType == 'admin')
{
     showAdminCtrlPanel();
     echo 'Welcome to your control panel...';
}
else 
  //show error message.

اگه خوب به این مثال دقت کنید می بینید که اگر مجبور باشیم چند دستور رو داخل بلوک شرطی قرار بدیم باید از آکولاد {} استفاده کنیم و مجموعه دستورات رو داخل آکولادها قرار بدیم! حالا فرض کنید ما چند گروه کاربر دیگه هم داریم که باید برای هر کدوم پیغام و صفحه متمایزی رو نشون بدیم! مثلا گروه های کاربریمون عبارتند از admin,user,editor,programmer در این حالت باید دستورات شرطی رو باهم ترکیب کنیم! بوسیله elseif این کار ممکن میشه:

if ($userType == 'admin')
{
     showAdminCtrlPanel();
     echo 'Welcome to your control panel...';
}
elseif($userType == 'user')
     //show user control panel
elseif($userType == 'editor')
     //show editors page
elseif($userType == 'programmer')
     //show development panel
else 
     //show error message.

میتونیم به هر تعداد که بخواهیم این کار رو تکرار کنیم و از elseif استفاده کنیم. در هر کدوم از بلوک های شرطی هم باید در صورتی که چندتا دستور داریم از آکولاد استفاده کنیم! حالا فرض کنید تعداد این شرط ها خیلی بیشتر بشه که در این صورت استفاده از if و elseif زیاد معقول به نظر نمیاد اینجاست که باید از نوع دیگه ای از دستورات شرطی (یا بهتره بگیم انتخابی) بهره ببریم! دستور switch در حالتی که تعداد if ها زیاد باشه خیلی به کار میاد. شکل کلی این دستور رو در ادامه می بینید:

switch($choice)
{
  case halateAvval: ;
break;
  case halateDovvom: ;
break;
  case halateSevvom: ;
break;
.
.
.
  default: ;
break;
}

دستور switch یه مقدار توضیح میخواد:
اول اینکه switch یک متغیر به عنوان ورودی میگیره و ما مقادیر مختلف اون رو بررسی می کنیم.
دوم اینکه هر کدوم از مقادیر رو جلوی عبارت case می نویسیم.
سوم اینکه بعد از تمام شدن هر بلوک از دستورات برای یک مقدار خاص ، باید از ;break استفاده کنیم.
چهارم هم اینکه deafult حالت پیش فرض رو مشخص میکنه یعنی وقتی که متغیرمون هیچ کدوم از مقادیر مورد بررسی رو نداشته باشه.

در پایان این بخش هم مثال گروه های کاربری رو با switch بازنویسی میکنیم:

switch($userType)
{
  case 'admin': 
     showAdminCtrlPanel();
     echo 'Welcome to your control panel...';
break;

  case 'user': 
     //show user control panel
break;

  case 'editor': 
    //show editors page
break;

  case 'programmer': 
   //show development panel
break;

  default: 
   //show error message.
break;
}

می بینید که کد ساده تر و خواناتری داریم که در موارد مشابه کارمون رو ساده میکنه!

webfocus.ir